【C#】【DevExpress】自定義單元格右鍵選單,去除單元格編輯時,載入系統的預設選單

陆陆无为而治者發表於2024-10-21

使用GridView,自定義單元格的右擊選單,可以透過監聽事件PopupMenuShowing,實現新增選單。

 1 private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e)
 2 {
 3     GridView view = sender as GridView;
 4     if (view == null) return;
 5 
 6     // 獲取當前編輯狀態下的單元格
 7     //判斷單元格是否處於編輯狀態
 8     if(!e.HitInfo.InColumn)
 9     {
10         DXMenuItem newMenuItem = new DXMenuItem();
11         newMenuItem.Caption = "新的選單項";
12         newMenuItem.Click += customMenuItem_Click;
13         e.Menu.Items.Add(newMenuItem);
14     }
15 }

這裡的customMenuItem_Click是自定義的單擊事件。

執行後,右擊單元格單元格如下所示:

但是,這也有一個問題。當單元格處於編輯狀態時,顯示的還是系統預設的右擊選單欄。

我們能不能修改編輯狀態下的預設選單欄?因為我們無法直接遮蔽,選單欄。我們可以透過調取單元格編輯器事件,新建一個選單項(如果不需要,怎不給這個選單項增加任何item)。

 1 private void gridView1_ShownEditor(object sender, EventArgs e)
 2 {
 3     BaseEdit activeEditor = gridView1.ActiveEditor;
 4     if (activeEditor != null)
 5     {
 6         if (activeEditor is TextEdit)
 7         {
 8             ContextMenu enptyMen = new ContextMenu();
 9             MenuItem item = new MenuItem();
10             item.Text = "新的選單項";
11             item.Name = "test";
12             item.Click += customMenuItem_Click;
13             enptyMen.MenuItems.Add(item);
14             activeEditor.Properties.ContextMenu = enptyMen;
15         }
16     }
17 }

這樣,編輯狀態下右擊,就能是我嗎自定義的選單了。

相關文章