C#进行Visio二次开发之判断图纸是否有设备
判断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