判断Visio图纸上是否图纸有设备(存在图元), 有两种方法,一种是通过Window对象的SelectAll方法,在判断选择的集合是否不为空即可,如下:





///

<summary>


///
判断是否有对象选定

///

</summary>


///

<param name="window"></param>


///

<returns></returns>


[CLSCompliant(
false
)]

public

static

bool
HasShapeInWindow(Window window)



{

bool
result
=

false
;

try




{

window.SelectAll();

result

=
(window.Selection.Count
>

0
);

window.DeselectAll();

}



catch




{ ;}



return
result;

}



另外一种方法是判断页面对象Page的Shapes对象集合是否大于0即可,如下:


Visio.Page page
=
VisioUtility.GetPage(VisDocument,
"
馈线图
"
);

if
(page.Shapes.Count
<=

0
)



{

MessageUtil.ShowTips(

"
图纸上没有设备
"
);

return
;

}






///

<summary>


///
获取Visio文档制定的页面对象

///

</summary>


///

<param name="visDocument"></param>


///

<param name="pageType"></param>


///

<returns></returns>


[CLSCompliant(
false
)]

public

static
Page GetPage(Document visDocument,
string
pageType)



{

Page visPage;

for
(
int
i
=

1
; i
<=
visDocument.Pages.Count; i
++
)



{

visPage

=
visDocument.Pages[i];

if
(FormulaStringToString(visPage.PageSheet.get_Cells(CUST_PROP_PREFIX
+

"
绘图页
"
).Formula)
==
pageType)



{

return
visPage;

}



}




return

null
;

}


两种方法基本上效果一样, 第二种方法可能速度会快一些,如果你在Visio的Document对象事件中有处理逻辑的时候, 如下所示, 而且有的情况下,你还不能用第一种方式来进行判断:



this
.CtrlDrawing.SelectionChanged
+=

new
EVisOcx_SelectionChangedEventHandler(ctrlDrawing_SelectionChanged);


希望你能发现更多好玩的东西,呵呵


转载请注明出处:

撰写人:伍华聪  http:

//
www.iqidi.com


标签: none

添加新评论