zoukankan      html  css  js  c++  java
  • 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 

    主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发
    专注于Winform开发框架/混合式开发框架Web开发框架Bootstrap开发框架微信门户开发框架的研究及应用
      转载请注明出处:
    撰写人:伍华聪  http://www.iqidi.com 
        
  • 相关阅读:
    使用 Rust 编写更快的 React 组件
    快速入门 postcss 插件:自动转换 px 到 rem
    通过实战理解CPU上下文切换
    “web资源加载优先级”原来能这么精准控制
    使用Brotli提高网站访问速度
    使用 npm shrinkwrap 来管理项目依赖
    如何用“底层逻辑”,看清世界的底牌?
    Node.js 应用全链路追踪技术——全链路信息获取
    解决 Elastic Search 的深分页问题
    Whistle 实现原理 —— 从 0 开始实现一个抓包工具
  • 原文地址:https://www.cnblogs.com/wuhuacong/p/1209406.html
Copyright © 2011-2022 走看看