1. 程式人生 > >gridcontrol的列頭右鍵菜單問題

gridcontrol的列頭右鍵菜單問題

就會 data ima 增加 感覺 sender per nis isp

Dev控件GridControl設置了一個右鍵菜單 this.gridControl1.ContextMenu = contextMenu2; 而GridControl在運行排序的時候,即

gridview1->OptionsCustomization->AllowSort設為true時,控件自帶一個英文的右鍵菜單如下 技術分享 這樣當點擊表列頭時,就會出現下面的兩個右鍵菜單重疊問題。 技術分享 這樣當點擊表列頭時,就會出現下面的兩個右鍵菜單重疊問題。 技術分享
解決辦法:

  privatevoid gridView1_MouseUp(object sender, MouseEventArgs e)
        {
            DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi 
= this.gridView1.CalcHitInfo(e.Location); if (!hi.InRow && e.Button == MouseButtons.Right) { ContextMenu emptyMenu = newContextMenu(); this.gridControl1.ContextMenu = emptyMenu; } else {
this.gridControl1.ContextMenu = contextMenu2; } } 下面是解決問題時的兩篇參考文獻: Dev控件屏蔽gridcontrol和buttonedit右鍵菜單 dev控件屏蔽gridcontrol和buttonedit右鍵菜單,有需要的朋友可以參考下。 DevExpress的很多控件都自帶右鍵菜單,菜單風格又與控件本身差別很多,感覺極不協調,而且都是英文,這篇文章講述如何屏蔽這些右鍵菜單。 1.gridcontrol的右鍵菜單 gridcontrol的右鍵菜單有兩種,第一種是在表格列頭右鍵彈出的菜單,第二種是點擊表格列頭邊上的黑色“釘子”按鈕彈出的菜單, 屏蔽它們只需修改屬性即可:gridview1
->OptionsCustomization->AllowFilter和gridview1->OptionsCustomization->AllowSort改為false 2.buttonEdit和pictureedit的右鍵菜單 buttonEdit以及pictureEdit的右鍵菜單無法通過直接設置屬性屏蔽,想屏蔽它們需要兩行代碼: ContextMenu emptyMenu = new ContextMenu();buttonedit.Properties.ContextMenu = emptyMenu; 即自己定義一個空的右鍵菜單,賦給buttonedit。 Dev GirdView 去掉系統菜單增加自定義菜單 Dev GirdView 去掉系統菜單增加自定義菜單 1.獲取gridview 事件如下: private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)//判斷是否是列標題的右鍵菜單 { GridViewColumnMenu menu = e.Menu as GridViewColumnMenu; //menu.Items.RemoveAt(6);//移除右鍵菜單中的第7個功能,從0開始 menu.Items.Clear();//清除所有功能 string strDisp =自己需要增加的右鍵信息 DXMenuItem dxm = new DXMenuItem(); dxm.Caption = strDisp; menu.Items.Add(dxm); } } 2.紅色標示第一行清除dev自帶的右鍵系統菜單。 3.紅色標示第二行增加自己定義的菜單,可以讀取lst 或者datatable 數據集進行賦值。 4.聲明DXMenuItem dxm = new DXMenuItem(); 5.賦值 dxm.Caption = strDisp; 6.增加自定義數據集 menu.Items.Add(dxm); 7.觸發右鍵菜單 private void gridView1_MouseUp(object sender, MouseEventArgs e) { DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = this.gridView1.CalcHitInfo(e.Location); if (e.Button == MouseButtons.Right) { this.popupMenu1.ShowPopup(Control.MousePosition); } }

技術分享

gridcontrol的列頭右鍵菜單問題