Jör*_*ann 6 .net datagridview winforms
我在WinForms datagridview中有以下代码,用于处理右键单击以选择基础行:
private void dataGridViewTestSteps_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Right) return;
var hitTestInfo = dataGridViewTestSteps.HitTest(e.X, e.Y);
dataGridViewTestSteps.ClearSelection();
dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Selected = true;
}
Run Code Online (Sandbox Code Playgroud)
...现在这样可以正常工作,但它不会将小指示器放在正确的行中(见下图).所以基本上我想知道上面方法中缺少什么?

行标题光标显示当前行,而不是所选行 - 它们实际上是不同的,因为您可以有多个选定的行但只有一个当前行.
请尝试使用此代码:
private void dataGridViewTestSteps_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Right) return;
var hitTestInfo = dataGridViewTestSteps.HitTest(e.X, e.Y);
//dataGridViewTestSteps.ClearSelection();
//dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Selected = true;
dataGridViewTestSteps.CurrentCell = dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Cells[0];
}
Run Code Online (Sandbox Code Playgroud)