C#举办Visio二次开发之判断图纸是或不是有装备

认清Visio图纸上是还是不是图纸有设施(存在图元),
有三种格局,一种是通过Window对象的SelectAll方法,在认清选取的集纳是或不是不为空即可,如下:

图片 1图片 2        /**//// <summary>
图片 3        /// 判断是不是有目标选定
图片 4        /// </summary>
图片 5        /// <param name=”window”></param>
图片 6        /// <returns></returns>
图片 7        [CLSCompliant(false)]
图片 8        public static bool HasShapeInWindow(Window window)
图片 9图片 10        图片 11{
图片 12            bool result = false;
图片 13            try
图片 14图片 15            图片 16{
图片 17                window.SelectAll();
图片 18                result = (window.Selection.Count > 0);
图片 19                window.DeselectAll();
图片 20            }
图片 21            catch
图片 22图片 23            图片 24{ ;}
图片 25
图片 26            return result;
图片 27        }

除此以外一种方式是判定页面对象Page的Shapes对象集合是不是大于0即可,如下:

图片 28            Visio.Page page = VisioUtility.GetPage(VisDocument, “馈线图”);
图片 29            if (page.Shapes.Count <= 0)
图片 30图片 31            图片 32{
图片 33                MessageUtil.ShowTips(“图纸上尚未配备”);
图片 34                return;
图片 35            }

图片 36图片 37        /**//// <summary>
图片 38        /// 获取Visio文档制定的页面对象
图片 39        /// </summary>
图片 40        /// <param name=”visDocument”></param>
图片 41        /// <param name=”pageType”></param>
图片 42        /// <returns></returns>
图片 43        [CLSCompliant(false)]
图片 44        public static Page GetPage(Document visDocument, string pageType)
图片 45图片 46        图片 47{
图片 48            Page visPage;
图片 49            for (int i = 1; i <= visDocument.Pages.Count; i++)
图片 50图片 51            图片 52{
图片 53                visPage = visDocument.Pages[i];
图片 54                if (FormulaStringToString(visPage.PageSheet.get_Cells(CUST_PROP_PREFIX + “绘图页”).Formula) == pageType)
图片 55图片 56                图片 57{
图片 58                    return visPage;
图片 59                }
图片 60            }
图片 61
图片 62            return null;
图片 63        }

两种格局大多功能等同,
第二种方法也许速度会快一些,如果你在Visio的Document对象事件中有处理逻辑的时候,
如下所示, 而且有的情况下,你还不可能用第一种形式来展开判定:

图片 64            this.CtrlDrawing.SelectionChanged += new EVisOcx_SelectionChangedEventHandler(ctrlDrawing_SelectionChanged);
图片 65

期望您能发现越多好玩的东西,呵呵

图片 66转发请评释出处:
图片 67撰写人:伍华聪  http://www.iqidi.com 

相关文章