【发布时间】:2013-06-16 08:03:01
【问题描述】:
我在表单上有一个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。您可能需要将坐标转换为网格空间,但这很简单。 -
我搞定了。上面编辑的帖子包括答案...
-
@LeonidasFett 您可以在页面下方回答您自己的问题。人们可以在那里投票,而且更容易找到
标签: c# datagridview onclick