2014-01-29 84 views
1

我有一個DataGridView有9列。 我爲所有列標題添加了相同的ContextMenuStrip如何通過在Winforms中單擊ContextMenu來獲取DataGridView的列索引?

dataGridView.Columns[i].HeaderCell.ContextMenuStrip = myContextMenuStrip; 

myContextMenuStrip包含一個名爲Hide Column的項目。

現在,我有一個hidecolumnClick事件的事件處理程序,我想知道在事件處理程序中點擊了哪個列標題? 有沒有辦法做到這一點?

+0

什麼是發件人參數?數據網格或單元格?如果是單元格則找到單元格的列。 –

回答

2

訂閱DataGridView.CellMouseDown事件。在事件處理程序中,存儲列索引或顯示所需的上下文菜單。

示例代碼:

void datagridview1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
     //get the RowIndex or ColumnIndex from the event argument 
    } 
} 
1

您好我想出了另一個soution如果u想使用文本菜單的同一個對象的所有頭。檢查出來..

綁定併網

dataGridView1.CellMouseDown += new DataGridViewCellMouseEventHandler(dataGridView1_CellMouseDown); 

和cellmousedown集列的值CellMouseDown事件點擊如下 -

int columnClicked = -1; 

void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    columnClicked = e.ColumnIndex; 
} 
現在

您可以訪問欄按下值在上下文菜單項點擊事件如下

private void helloToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show(columnClicked.ToString()); 
} 

它是例外你有任務上下文菜單已標頭..

如果你想我可以給你的樣本也..

相關問題