首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# Visio 二次開發:事件機制(三)——完整事件清單與 IVisEventProc 實現模式

     編輯:關於C語言

Visio 物件事件完整分類

Cell 物件事件

  • CellChanged:儲存格值變更
  • FormulaChanged:公式變更

Selection 物件事件

  • BeforeSelectionDelete:選取刪除前
  • QueryCancelSelectionDelete:刪除確認提示
  • SelectionAdded:選取新增
  • SelectionChanged:選取變更
  • SelectionDeleteCanceled:刪除取消

Connects 物件事件

  • ConnectionsAdded:連線新增
  • ConnectionsDeleted:連線刪除

Style 物件事件

  • StyleAdded、StyleChanged、BeforeStyleDelete、StyleDeleteCanceled、QueryCancelStyleDelete

Keyboard / Mouse 事件

  • KeyDown/KeyPress/KeyUp
  • MouseDown/MouseMove/MouseUp

事件處理標準模式:IVisEventProc


// 1. 實作介面
public class EventSink : IVisEventProc
{
    public object VisEventProc(short eventCode, object source, 
        object eventInfo, object extraInfo)
    {
        // 依 eventCode 分派至具體處理函式
        switch (eventCode)
        {
            case (short)VisEventCodes.visEvtShapeAdded:
                OnShapeAdded(source as Visio.Shape);
                break;
            // ... 其他事件 ...
        }
        return null;
    }
    
    private void OnShapeAdded(Visio.Shape shape) { /* ... */ }
}

// 2. 建立事件諮詢
EventSink sink = new EventSink();
documentEvents.AddAdvise(
    (short)VisEventCodes.visEvtShapeAdded, 
    sink, 0, "ShapeAdd");

// 3. 解除諮詢 (釋放資源)
documentEvents.DeleteAdvise(adviseID);

AddAdvise 關鍵參數

  • EventCode:VisEventCodes 列舉值
  • IVisEventProc:事件接收器實例
  • Context:使用者定義內容 (傳回 extraInfo)
  • Description:除錯用說明文字

常用事件代碼組合技巧


// 監聽形狀新增/刪除/變更
(short)VisEventCodes.visEvtAdd + (short)VisEventCodes.visEvtShape
(short)VisEventCodes.visEvtDelete + (short)VisEventCodes.visEvtShape
(short)VisEventCodes.visEvtChange + (short)VisEventCodes.visEvtShape
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved