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

图片 1                    // Document event codes
图片 2                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 3                        visEvtDoc + (short)Microsoft.Office.Interop.Visio.
图片 4                        VisEventCodes.visEvtDel:
图片 5                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 6                        visEvtCodeBefDocSave:
图片 7                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 8                        visEvtCodeBefDocSaveAs:
图片 9                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 10                        visEvtCodeDocDesign:
图片 11

图片 12                    // Cell event codes
图片 13                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 14                        visEvtCell + (short)Microsoft.Office.Interop.Visio.
图片 15                        VisEventCodes.visEvtMod:
图片 16                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 17                        visEvtFormula + (short)Microsoft.Office.Interop.Visio.
图片 18                        VisEventCodes.visEvtMod:

现实的施用,最好下载Visio二零零六SDK举行学习,本身编写一些例证对事件开展拍卖

图片 19                   // Shape event codes
图片 20                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 21                        visEvtShape + (short)Microsoft.Office.Interop.Visio.
图片 22                        VisEventCodes.visEvtDel:
图片 23                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 24                        visEvtCodeShapeBeforeTextEdit:
图片 25                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 26                        visEvtShape + visEvtAdd:
图片 27                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 28                        visEvtShape + (short)Microsoft.Office.Interop.Visio.
图片 29                        VisEventCodes.visEvtMod:

Visio的三次开发进度中,必定要拍卖很多Visio事件,事件基本上分为三类:Document事件、Applicaiton事件、AxDrawingControl事件。Document事件是种种文档创制只怕打开都急需重新绑定几回的,不过Application事件不变,即不须求再度绑定,AxDrawingControl是ActiveX控件的风浪响应。
在C#展开Visio的开销中,通过接二连三接口IVis伊夫ntProc,可以创立事件的侦听处理类,如下所示:

图片 30                    // Master event codes
图片 31                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 32                        visEvtMaster + (short)Microsoft.Office.Interop.Visio.
图片 33                        VisEventCodes.visEvtDel:
图片 34                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 35                        visEvtMaster + (short)Microsoft.Office.Interop.Visio.
图片 36                        VisEventCodes.visEvtMod:
图片 37                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 38                        visEvtCodeCancelMasterDel:

图片 39              newEvent = documentEvents.AddAdvise(
图片 40                (short)VisEventCodes.visEvtMod + (short)VisEventCodes.visEvtCell,
图片 41                (IVisEventProc)this, sink, “CellChanged”);

图片 42                    // Page event codes
图片 43                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 44                        visEvtPage + (short)Microsoft.Office.Interop.Visio.
图片 45                        VisEventCodes.visEvtDel:
图片 46                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 47                        visEvtPage + visEvtAdd:
图片 48                    case (short)Microsoft.Office.Interop.Visio.VisEventCodes.
图片 49                        visEvtPage + (short)Microsoft.Office.Interop.Visio.
图片 50                        VisEventCodes.visEvtMod:
图片 51

图片 52             newEvent = documentEvents.AddAdvise(
图片 53                (short)VisEventCodes.visEvtCodeQueryCancelSelDel,
图片 54                (IVisEventProc)this, sink, “QueryCancelSelectionDelete”);

将事件和我们的处理函数联系起来,还亟需对事件举办侦听,即AddAdvise,上面列出一段怎么着侦听事件的代码供参考

图片 55            newEvent = documentEvents.AddAdvise(
图片 56                (short)VisEventCodes.visEvtDel + (short)VisEventCodes.visEvtShape,
图片 57                (IVisEventProc)this, sink, “ShapeDelete”);

再有很多很多..

图片 58    [ComVisible(true)]
图片 59    public sealed class EventSink2 : IVisEventProc
图片 60图片 61    图片 62{
图片 63
图片 64图片 65图片 66图片 67..
图片 68
图片 69        object IVisEventProc.VisEventProc(short eventCode, object source, int eventId,
图片 70            int eventSequenceNumber, object subject, object moreInfo)
图片 71图片 72        图片 73{
图片 74           图片 75
图片 76        }
图片 77     }

事件有无数类,有Application级其余,有Document级其余,有Page级其他,有Shape级其余,有Windows级其余,有Cell级其他…………..,下面截取一部分事件代码看看

图片 78            const string sink = “”;
图片 79            Event newEvent = null;
图片 80
图片 81            EventList applicationEvents = eventApplication.EventList;
图片 82            EventList documentEvents = eventDocument.EventList;
图片 83
图片 84            newEvent = documentEvents.AddAdvise(
图片 85                (unchecked((short)VisEventCodes.visEvtAdd) + (short)VisEventCodes.visEvtShape),
图片 86                (IVisEventProc)this, sink, “ShapeAdd”);

图片 87             newEvent = documentEvents.AddAdvise(
图片 88                (short)VisEventCodes.visEvtCodeShapeExitTextEdit,
图片 89                (IVisEventProc)this, sink, “ShapeExitedTextEdit”);

相关文章