Visio的二次开发过程中,必定要处理很多Visio事件,事件基本上分为三类:Document事件、Applicaiton事件、AxDrawingControl事件。Document事件是每个文档创建或者打开都需要重新绑定一次的,但是Application事件不变,即不需要重新绑定,AxDrawingControl是ActiveX控件的事件响应。
在C#进行Visio的开发中,通过继承接口IVisEventProc,可以创建事件的侦听处理类,如下所示:
C#进行Visio开发的事件处理    [ComVisible(true)]
C#进行Visio开发的事件处理    
public sealed class EventSink2 : IVisEventProc
     }

事件有很多类,有Application级别的,有Document级别的,有Page级别的,有Shape级别的,有Windows级别的,有Cell级别的..............,下面截取一部分事件代码看看

C#进行Visio开发的事件处理                    // Document event codes
C#进行Visio开发的事件处理
                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtDoc 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtDel:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtCodeBefDocSave:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtCodeBefDocSaveAs:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtCodeDocDesign:
C#进行Visio开发的事件处理
C#进行Visio开发的事件处理                    // Page event codes
C#进行Visio开发的事件处理
                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtPage 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtDel:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtPage 
+ visEvtAdd:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtPage 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtMod:
C#进行Visio开发的事件处理
C#进行Visio开发的事件处理                    // Master event codes
C#进行Visio开发的事件处理
                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtMaster 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtDel:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtMaster 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtMod:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtCodeCancelMasterDel:
C#进行Visio开发的事件处理                   // Shape event codes
C#进行Visio开发的事件处理
                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtShape 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtDel:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtCodeShapeBeforeTextEdit:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtShape 
+ visEvtAdd:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtShape 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtMod:
C#进行Visio开发的事件处理                    // Cell event codes
C#进行Visio开发的事件处理
                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtCell 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtMod:
C#进行Visio开发的事件处理                    
case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
C#进行Visio开发的事件处理                        visEvtFormula 
+ (short)Microsoft.Office.Interop.Visio.
C#进行Visio开发的事件处理                        VisEventCodes.visEvtMod:
还有很多很多..

将事件和我们的处理函数联系起来,还需要对事件进行侦听,即AddAdvise,下面列出一段如何侦听事件的代码供参考
C#进行Visio开发的事件处理            const string sink = "";
C#进行Visio开发的事件处理            Event newEvent 
= null;
C#进行Visio开发的事件处理
C#进行Visio开发的事件处理            EventList applicationEvents 
= eventApplication.EventList;
C#进行Visio开发的事件处理            EventList documentEvents 
= eventDocument.EventList;
C#进行Visio开发的事件处理
C#进行Visio开发的事件处理            newEvent 
= documentEvents.AddAdvise(
C#进行Visio开发的事件处理                (
unchecked((short)VisEventCodes.visEvtAdd) + (short)VisEventCodes.visEvtShape),
C#进行Visio开发的事件处理                (IVisEventProc)
this, sink, "ShapeAdd");

C#进行Visio开发的事件处理            newEvent 
= documentEvents.AddAdvise(
C#进行Visio开发的事件处理                (
short)VisEventCodes.visEvtDel + (short)VisEventCodes.visEvtShape,
C#进行Visio开发的事件处理                (IVisEventProc)
this, sink, "ShapeDelete");

C#进行Visio开发的事件处理              newEvent 
= documentEvents.AddAdvise(
C#进行Visio开发的事件处理                (
short)VisEventCodes.visEvtMod + (short)VisEventCodes.visEvtCell,
C#进行Visio开发的事件处理                (IVisEventProc)
this, sink, "CellChanged");

C#进行Visio开发的事件处理             newEvent 
= documentEvents.AddAdvise(
C#进行Visio开发的事件处理                (
short)VisEventCodes.visEvtCodeShapeExitTextEdit,
C#进行Visio开发的事件处理                (IVisEventProc)
this, sink, "ShapeExitedTextEdit");

C#进行Visio开发的事件处理             newEvent 
= documentEvents.AddAdvise(
C#进行Visio开发的事件处理                (
short)VisEventCodes.visEvtCodeQueryCancelSelDel,
C#进行Visio开发的事件处理                (IVisEventProc)
this, sink, "QueryCancelSelectionDelete");

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

相关文章:

  • 2021-05-30
  • 2021-05-15
  • 2021-12-01
  • 2021-10-08
猜你喜欢
  • 2021-12-22
  • 2021-08-31
  • 2022-12-23
  • 2021-11-22
  • 2021-09-14
  • 2021-03-28
  • 2021-11-25
相关资源
相似解决方案