我在表單上有一個DataGridView
。當我右鍵單擊一行時,我需要程序打開一個上下文菜單。通過這個上下文菜單,我希望能夠修改DataGridView
中的數據。在mouse_click事件中選擇DataGridView中的行
我已經得到上下文菜單來顯示我右鍵單擊的位置,但我不知道從哪裏去。因爲我將刪除(例如)整行,我需要獲取所述行的索引,並將其設置爲selected。我在cell_clicked
事件中試過,但我無法確定是按下了鼠標左鍵還是右鍵。但與mouse_click
事件我不能得到行索引。
這裏是我的代碼:
public Form()
{
ContextMenu contextMenu = new ContextMenu();
//Fill Context Menu
MenuItem delete = new MenuItem("Delete");
contextMenu.MenuItems.Add(delete);
}
private void grdSchedules_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
contextMenu.Show(grdSchedules, new Point(e.Y, e.Y));
//Get rowindex here and select row
}
}
我已經嘗試過這種方式:
private void grdSchedules_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right) //e.Button does not work here
{
contextMenu.Show(grdSchedules, new Point(e.Y, e.Y));
}
}
您可以在'CellClick'中使用'MousePosition'來代替'e.X'和'e.Y'。您可能必須將座標轉換爲網格空間,但這很簡單。 – DonBoitnott
這應該會幫助你:http://stackoverflow.com/questions/1718389/right-click-context-menu-for-datagrid – computer10171
我得到它的工作。編輯上面的帖子,包括答案... – LeonidasFett