C#进行Visio开发的事件处理

Visio的二次开发过程中,必定要处理很多Visio事件,事件基本上分为三类:Document事件、Applicaiton事件、AxDrawingControl事件。Document事件是每个文档创建或者打开都需要重新绑定一次的,但是Application事件不变,即不需要重新绑定,AxDrawingControl是ActiveX控件的事件响应。
在C#进行Visio的开发中,通过继承接口IVisEventProc,可以创建事件的侦听处理类,如下所示:
None.gif    [ComVisible( true)]
None.gif     public  sealed  class EventSink2 : IVisEventProc
ExpandedBlockStart.gif     {
InBlock.gif
InBlock.gifdot.gifdot.gifdot.gif..
InBlock.gif
InBlock.gif        object IVisEventProc.VisEventProc(short eventCode, object source, int eventId,
InBlock.gif            int eventSequenceNumber, object subject, object moreInfo)
ExpandedSubBlockStart.gif        {
InBlock.gif           dot.gif
ExpandedSubBlockEnd.gif        }
ExpandedBlockEnd.gif     }
事件有很多类,有Application级别的,有Document级别的,有Page级别的,有Shape级别的,有Windows级别的,有Cell级别的..............,下面截取一部分事件代码看看
None.gif                     //  Document event codes
None.gif
                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtDoc + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtDel:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtCodeBefDocSave:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtCodeBefDocSaveAs:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtCodeDocDesign:
None.gif
None.gif                     //  Page event codes
None.gif
                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtPage + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtDel:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtPage + visEvtAdd:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtPage + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtMod:
None.gif
None.gif                     //  Master event codes
None.gif
                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtMaster + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtDel:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtMaster + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtMod:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtCodeCancelMasterDel:
None.gif                    //  Shape event codes
None.gif
                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtShape + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtDel:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtCodeShapeBeforeTextEdit:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtShape + visEvtAdd:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtShape + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtMod:
None.gif                     //  Cell event codes
None.gif
                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtCell + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtMod:
None.gif                     case ( short)Microsoft.Office.Interop.Visio.VisEventCodes.
None.gif                        visEvtFormula + ( short)Microsoft.Office.Interop.Visio.
None.gif                        VisEventCodes.visEvtMod:
还有很多很多..
将事件和我们的处理函数联系起来,还需要对事件进行侦听,即AddAdvise,下面列出一段如何侦听事件的代码供参考
None.gif             const  string sink =  "";
None.gif            Event newEvent =  null;
None.gif
None.gif            EventList applicationEvents = eventApplication.EventList;
None.gif            EventList documentEvents = eventDocument.EventList;
None.gif
None.gif            newEvent = documentEvents.AddAdvise(
None.gif                ( unchecked(( short)VisEventCodes.visEvtAdd) + ( short)VisEventCodes.visEvtShape),
None.gif                (IVisEventProc) this, sink,  " ShapeAdd ");

None.gif            newEvent = documentEvents.AddAdvise(
None.gif                ( short)VisEventCodes.visEvtDel + ( short)VisEventCodes.visEvtShape,
None.gif                (IVisEventProc) this, sink,  " ShapeDelete ");

None.gif              newEvent = documentEvents.AddAdvise(
None.gif                ( short)VisEventCodes.visEvtMod + ( short)VisEventCodes.visEvtCell,
None.gif                (IVisEventProc) this, sink,  " CellChanged ");

None.gif             newEvent = documentEvents.AddAdvise(
None.gif                ( short)VisEventCodes.visEvtCodeShapeExitTextEdit,
None.gif                (IVisEventProc) this, sink,  " ShapeExitedTextEdit ");

None.gif             newEvent = documentEvents.AddAdvise(
None.gif                ( short)VisEventCodes.visEvtCodeQueryCancelSelDel,
None.gif                (IVisEventProc) this, sink,  " QueryCancelSelectionDelete ");

具体的使用,最好下载Visio2007 SDK进行学习,自己编写一些例子对事件进行处理

本文转自博客园伍华聪的博客,原文链接:C#进行Visio开发的事件处理,如需转载请自行联系原博主。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值