2011-07-22 31 views
1

我有一個datagridview有五個列和上下文菜單條有項目和子項目。當我右鍵單擊最後一列時,我想打開上下文菜單。C# - DatagridView和ContextMenuStrip

我試過這段代碼,但是它是沒有子項的打開的上下文菜單條。

dataGrid.Columns[dataGrid.Columns.Count].HeaderCell.ContextMenuStrip = contextMenuStrip1; 

回答

5

它看起來像你想打開你的ContextMenuStrip,如果你的用戶右鍵單擊你的DataGridView的最後一列的標題。我將使用DataGridView MouseDown事件,並在這種情況下檢查這些條件,如果符合,請調用ContextMenuStrip的Show方法。

像這樣:

private void dataGridView1_MouseDown(object sender, MouseEventArgs e) { 
    if (e.Button == MouseButtons.Right) { 
     var ht = dataGridView1.HitTest(e.X, e.Y); 
     // See if the user right-clicked over the header of the last column. 
     if (( ht.ColumnIndex == dataGridView1.Columns.Count - 1) 
      && (ht.Type == DataGridViewHitTestType.ColumnHeader)) { 
      // This positions the menu at the mouse's location. 
      contextMenuStrip1.Show(MousePosition); 
     } 
    } 
} 
+0

周杰倫裏格斯您的示例工作。 TNX! – PATO7

0

如果你的意思是你想上下文菜單附加到最後一列的,你的方向可能是正確的。但是最後一欄的索引是dataGrid.Columns.Count - 1。所以,這段代碼對我來說工作的很好:

dataGrid.Columns[dataGrid.Columns.Count - 1].HeaderCell.ContextMenuStrip = contextMenuStrip1; ? 

子項目已到位。