gridcontrol的列頭右鍵菜單問題


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);
            }
        }

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM