我在一个表单上有一个
我已经成功让上下文菜单在右键单击时显示出来,但我不知道该怎么做才能继续操作。因为我将要删除(例如)整个行,所以需要获取该行的索引并将其设置为选中状态。我尝试使用
以下是我的代码:
DataGridView
。当我右键单击一行时,需要程序打开一个上下文菜单。使用此上下文菜单,我希望能够修改 DataGridView
中的数据。我已经成功让上下文菜单在右键单击时显示出来,但我不知道该怎么做才能继续操作。因为我将要删除(例如)整个行,所以需要获取该行的索引并将其设置为选中状态。我尝试使用
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