visio二次开发——事件编程

visio二次开发——事件编程

  1. 首先,创建一个Visio事件侦听类

    “`
    ///
    /// Visio事件侦听类
    ///
    [ComVisible(true)]
    public sealed class EventSink : IVisEventProc
    {
    private Application eventApplication; //Visio应用程序对象
    private Document eventDocument; //Visio文档对象
    private int alertResponse;

    public event VisioEventHandler OnShapeAdd;      //形状添加事件
    public event VisioEventHandler OnShapeClick;      //形状点击事件
    public event VisioEventHandler OnShapeDelete;   //形状删除事件
    public event VisioEventHandler OnMarkerEvent;   //右键菜单事件阀门开关
    public event VisioEventHandler OnCellChanged;   //属性值修改事件
    public event VisioEventHandler OnTextEdit;      //文本编辑事件
    public event QueryCancelEventHandler OnQueryCancelSelectionDelete; //选区选择删除事件
    
    /// <summary>
    /// 默认构造函数
    /// </summary>
    public EventSink()
    {
    }
    
    /// <summary>
    /// 对文档的相关处理事件进行侦听处理
    /// </summary>
    /// <param name="callingApplication">应用对象</param>
    /// <param name="callingDocument">文档对象</param>
    [CLSCompliant(false)]
    public void AddAdvise(Application callingApplication, Document callingDocument)
    {
       // ArgumentValidation.CheckForNullReference(callingApplication, "callingApplication");
        //ArgumentValidation.CheckForNullReference(callingDocument, "callingDocument");
    
        // 保存应用程序对象,方便设置事件处理
        eventApplication = callingApplication;
        // 缓存AlertResponse 对象的值
        alertResponse = callingApplication.AlertResponse;
        // 保存文档对象,方便设置事件处理
        eventDocument = callingDocument;
    
        // 增加感兴趣的事件侦听处理
        setAddAdvise();
    
        return;
    }
    
    /// <summary>
    /// 当事件被增加到事件列表后,且该事件被触发处理,那么IVisEventProc.VisEventProc 函数会被Visio进行调用
    /// 事件增加通过SetAddAdvise函数进行处理。
    /// </summary>
    /// <param name="eventCode">触发的事件代码</param>
    /// <param name="source">触发事件的源对象,该对象可能是一个Visio应用程序对象(application),也可以是文档对象(document)。</param>
    /// <param name="eventId">触发的事件唯一性标识</param>
    /// <param name="eventSequenceNumber">触发事件的相对顺序</param>
    /// <param name="subject">发生该事件的对象应用,如对形状删除和增加的事件来说,对象就是形状本身。</param>
    /// <param name="moreInfo">关于该事件的附加信息</param>
    /// <returns>返回值会被忽略,除非事件是一个查询事件。如没有任何的查询事件,返回值对象是一个空值。</returns>
    object IVisEventProc.VisEventProc(short eventCode, object source, int eventId,
        int eventSequenceNumber, object subject, object moreInfo)
    {
        Application eventProcApplication = null;
        Document eventProcDocument = null;
        Shape eventShape = null;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值