【发布时间】:2018-06-08 14:41:47
【问题描述】:
我已经阅读了几个问题,询问如何在右键单击网格时实现 DataGridRow 选择。答案显示了实现它的几种不同方法,并且在大多数情况下,除了这个奇怪的错误之外,它们对我有用。
该行似乎已被选中,但除非先左键单击该行,否则第一行始终是选择操作时选择的行。即当我在第 3 行单击编辑时,第 1 行的数据将被传递到编辑表单(除非我在右键单击第 3 行之前左键单击它)
这是显示明显选择的右键菜单:
请注意,小指示器仍在第一行。
如果我关闭上下文菜单,则该行看起来被选中但不是:
如果我左键单击同一行,它现在被选中
这里是右键事件的代码:
设计师代码:
MyDataGrid.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MyDataGridView_MouseDown);
表格代码:
private void MyDataGridView_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
var hti = MyDataGrid.HitTest(e.X, e.Y);
MyDataGrid.CurrentCell = MyDataGrid.Rows[hti.RowIndex].Cells[hti.ColumnIndex];
}
}
我在实际选择行时缺少什么?
【问题讨论】:
-
作为一个选项,您可以简单地将
ContextMenuStrip分配给一行。此外,如果您希望在显示菜单之前选择行,您可以处理CellContextMenuStripNeeded事件。看来this post 就是你要找的。span>
标签: c# winforms right-click