我在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;
    }

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

最佳答案

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

请尝试以下代码:

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];
}

关于.net - 将DataGridView的行指示器放置到手动选择的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6818220/

10-09 14:01