为手动选择的行放置DataGridView的行指示符

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)

...现在这样可以正常工作,但它不会将小指示器放在正确的行中(见下图).所以基本上我想知道上面方法中缺少什么?

错误地放置行指示器

Dav*_*all 5

行标题光标显示当前行,而不是所选行 - 它们实际上是不同的,因为您可以有多个选定的行但只有一个当前行.

请尝试使用此代码:

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)