我有一個datagridview有五個列和上下文菜單條有項目和子項目。當我右鍵單擊最後一列時,我想打開上下文菜單。C# - DatagridView和ContextMenuStrip
我試過這段代碼,但是它是沒有子項的打開的上下文菜單條。
dataGrid.Columns[dataGrid.Columns.Count].HeaderCell.ContextMenuStrip = contextMenuStrip1;
我有一個datagridview有五個列和上下文菜單條有項目和子項目。當我右鍵單擊最後一列時,我想打開上下文菜單。C# - DatagridView和ContextMenuStrip
我試過這段代碼,但是它是沒有子項的打開的上下文菜單條。
dataGrid.Columns[dataGrid.Columns.Count].HeaderCell.ContextMenuStrip = contextMenuStrip1;
它看起來像你想打開你的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);
}
}
}
如果你的意思是你想上下文菜單附加到最後一列的頭,你的方向可能是正確的。但是最後一欄的索引是dataGrid.Columns.Count - 1
。所以,這段代碼對我來說工作的很好:
dataGrid.Columns[dataGrid.Columns.Count - 1].HeaderCell.ContextMenuStrip = contextMenuStrip1; ?
子項目已到位。
周杰倫裏格斯您的示例工作。 TNX! – PATO7