• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > visio二次开发--判断文档是否已发生变化(变化就加星号*)

visio二次开发--判断文档是否已发生变化(变化就加星号*)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了visio二次开发,visio开发工具,visio开发工具在哪,visio2013开发工具,visio 开发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1.最近做一个故障树诊断的项目,用visio二次开发,可以同时打开多个绘制的故障树图形文档。项目中需要实现判断文档是否发生变化,这是很多编辑软件的基本功能,变化了就加个星号*。如果整个项目从0开始自己设计就是另外一回事了,这里是基于visio二次开发,首先想到的是去看微软的官方文档,看是否有相关的API,或则是否改变会触发某些事件,遗憾的是我没找到。

2.不过visio毕竟是微软的产品,做的就是好。它对程序运行动态中的很多过程进行了定义和监视,有一个对Scope的监视,比如粘贴,复制,删除,移动对象,形状数据更改都对应一个Scope对象,都有唯一的scopeId(Scope的具体定义就不细说了,具体看开发文档)。值得一提的是,这里每个操作的对应Scope的信息我不是从开发文档看的,而是使用Visio里面提供的开发工具(需要在设置里面选择该项功能才有)一个个操作观察的,具体看图

括号中的内容就是对应的Scope对象的信息。开头的编号是对应的唯一scopeID。每行信息都是一个事件,都可以在程序监视和触发。EnterScope和ExitScope之间为一个Scope对象。

所以监视EnterScope事件,然后判断当前scopeID就可以知道进行了什么操作,比如scopeID==1187,就是移动了对象。然后把移动对象,粘贴,删除等等之类的都或上,这要是这些就可以判定文档发生了改变。

我的项目中具体涉及代码如下:

                string temp = TabControl.SelectedTab.Text;
                if (temp[temp.Length - 5] != '*')
                {
                    TabControl.SelectedTab.Text = temp.TrimEnd() + " *    ";
                }
            }
        }
</div>

3.Scope的具体定义开发文档中很详细,如果有耐心你也可以一个个试,在开发者工具-事件监视器里观察。
4.至于前两句EPage_CellChangedEventHandler,这是我的程序中为了动态判断形状数据是否合法,实事监控形状数据对应的Cel发生变化的事件进行判断。为什么先删除事件代理再添加?是为了解决程序里的另一个问题,这里不细说。

程序中的效果如下:

 

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • visio二次开发--判断文档是否已发生变化(变化就加星号*)

相关文章

  • 2017-05-28C#入门之窗体的简单用法实例
  • 2017-05-28c#文件助手类分享(读取文件内容 操作日志文件)
  • 2017-05-28C#列出当前系统所有正在运行程序的方法
  • 2017-05-28利用TaskManager爬取2万条代理IP实现自动投票功能
  • 2017-05-28C#域名解析简单实现方法
  • 2017-05-28C#实现自动识别URL网址的方法
  • 2017-05-28C#实现在购物车系统中生成不重复订单号的方法
  • 2017-05-28C#设置窗体最大化且不遮挡任务栏的方法
  • 2017-05-28C#中Convert.ToInt32()和int.Parse()的区别介绍
  • 2017-05-28C# 基础之运算符

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 基于C#中XmlWriter写入Xml的深入分析
    • 使用位运算实现网页中的过滤、筛选功能实例
    • C#实现一键换IP、重置DNS、网关及掩码的方法
    • C#检查Windows是否安装了某个服务的方法
    • C#实现注册码的方法
    • C#实现根据实体类自动创建数据库表
    • C#实现同Active MQ通讯的方法
    • C#遍历操作系统下所有驱动器的方法
    • C#给文字换行的小技巧
    • 总结C#网络编程中对于Cookie的设定要点

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有