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

C# Visio 二次開發:自訂右鍵選單實現(一)——兩種方案對比與 MouseUp 事件方案

     編輯:關於C語言

兩種實現方案對比

方案一:攔截 MouseUpEvent,彈出 ContextMenu —— 完全自訂,無原生選單

方案二:在 PageSheet 增加 Action,使用 RUNADDONWARGS —— 保留 Visio 內建複製/貼上等選單

效果對比圖

方案一:純自訂選單

方案二:保留原生選單

方案一:MouseUp 事件實現

// 註冊事件
drawingControl.MouseUpEvent += new AxMicrosoft.Office.Interop.VisOcx.EVisOcx_MouseUpEventHandler(this.onDrawingControlMouseUp);

// 事件處理
private void onDrawingControlMouseUp(short Button, short KeyButtonState, double x, double y)
{
    if (Button == 2) // 右鍵
    {
        // 計算螢幕座標並顯示 ContextMenu
        Point screenPos = drawingControl.PointToScreen(new Point((int)x, (int)y));
        contextMenu.Show(screenPos);
    }
}

選單項目建立範例

ContextMenu contextMenu = new ContextMenu();
MenuItem miCopy = new MenuItem("複製(&C)", OnCopy);
MenuItem miPaste = new MenuItem("貼上(&P)", OnPaste);
MenuItem miSep = new MenuItem("-");
MenuItem miDelete = new MenuItem("刪除(&D)", OnDelete);
contextMenu.MenuItems.AddRange(new MenuItem[] { miCopy, miPaste, miSep, miDelete });

方案選擇建議

  • 需完全控制選單內容、風格 → 方案一
  • 需保留 Visio 原生編輯功能 → 方案二
  • 方案二需操作 ShapeSheet Action 區塊,相對複雜但整合度高
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved