天天看点

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

Visio的二次开发过程中,必定要处理很多Visio事件,事件基本上分为三类:Document事件、Applicaiton事件、AxDrawingControl事件。Document事件是每个文档创建或者打开都需要重新绑定一次的,但是Application事件不变,即不需要重新绑定,AxDrawingControl是ActiveX控件的事件响应。

在C#进行Visio的开发中,通过继承接口IVisEventProc,可以创建事件的侦听处理类,如下所示:

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

    [ComVisible(true)]

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

    public sealed class EventSink2 : IVisEventProc

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

    {

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

..

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

        object IVisEventProc.VisEventProc(short eventCode, object source, int eventId,

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

            int eventSequenceNumber, object subject, object moreInfo)

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

        {

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

        }

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

     }

事件有很多类,有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开发的事件处理
C#进行Visio开发的事件处理

                        visEvtCodeBefDocSave:

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

                        visEvtCodeBefDocSaveAs:

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

                        visEvtCodeDocDesign:

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

                    // Page event codes

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

                        visEvtPage + (short)Microsoft.Office.Interop.Visio.

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

                        visEvtPage + visEvtAdd:

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

                        VisEventCodes.visEvtMod:

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

                    // Master event codes

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

                        visEvtMaster + (short)Microsoft.Office.Interop.Visio.

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

                        visEvtCodeCancelMasterDel:

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

                   // Shape event codes

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

                        visEvtShape + (short)Microsoft.Office.Interop.Visio.

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

                        visEvtCodeShapeBeforeTextEdit:

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

                        visEvtShape + visEvtAdd:

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

                    // Cell event codes

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

                        visEvtCell + (short)Microsoft.Office.Interop.Visio.

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

                        visEvtFormula + (short)Microsoft.Office.Interop.Visio.

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

还有很多很多..

将事件和我们的处理函数联系起来,还需要对事件进行侦听,即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开发的事件处理
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开发的事件处理
C#进行Visio开发的事件处理

                (short)VisEventCodes.visEvtCodeQueryCancelSelDel,

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

                (IVisEventProc)this, sink, "QueryCancelSelectionDelete");

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

继续阅读