.net - 为手动选择的行放置 DataGridView 的行指示器

标签 .net winforms datagridview

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

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

falsely placed row indicator

最佳答案

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

试试这个代码:

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/

相关文章:

c# - Debug.Assert() 仅在跨过它时触发

c# - .Net 邮件重复

c# - CaSTLe Windsor 命名空间冲突

c# - 水平滚动条消失设置最后一列大小以填充

gridview - Yii2:GridView 排序从列标题中删除

c# - 什么时候函数内的局部变量*实际上*被分配

c# - LINQ 可以创建备份表/复制临时表吗?

c# - 删除 Oracle 中不存在的记录是否被认为是错误的形式?

c# - 从 Char 索引确定逻辑行 (Winforms TextBox)

c# - 如何在鼠标悬停在任何单元格上时突出显示 datagridview 的行和/或列标签(在 c# 中)?