使用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 }
這樣,編輯狀態下右擊,就能是我嗎自定義的選單了。