如何让DataGridView显示所选行?

ker*_*ros 67 c# scroll datagridview selected winforms

我需要强制DataGridView显示所选row.

简而言之,我有一个根据键入的内容textbox更改DGV选择textbox.发生这种情况时,选择会更改为匹配row.

不幸的是,如果所选row内容不在视图中,我必须手动向下滚动才能找到所选内容.有谁知道如何强制DGV显示所选row

谢谢!

com*_*ech 116

你可以设置:

dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.SelectedRows[0].Index;
Run Code Online (Sandbox Code Playgroud)

以下是此属性的MSDN文档.


小智 46

这个滚动到选定的行而不将其放在顶部.

dataGridView1.CurrentCell = dataGridView1.Rows[index].Cells[0];
Run Code Online (Sandbox Code Playgroud)

  • 与FirstDisplayedScrollingRowInde不同,它还将行箭头移动到正确的行,选择行,并取消选择任何其他行. (5认同)
  • 肯定比`DataGridView.FirstDisplayedScrollingRowIndex`更加用户友好,谢谢! (2认同)
  • 但是,如果第一列已被隐藏,这将引发异常。 (2认同)

Geo*_*org 22

还要考虑这段代码(使用来自competent_tech建议的方式):

private static void EnsureVisibleRow(DataGridView view, int rowToShow)
{
    if (rowToShow >= 0 && rowToShow < view.RowCount)
    {
        var countVisible = view.DisplayedRowCount(false);
        var firstVisible = view.FirstDisplayedScrollingRowIndex;
        if (rowToShow < firstVisible)
        {
            view.FirstDisplayedScrollingRowIndex = rowToShow;
        }
        else if (rowToShow >= firstVisible + countVisible)
        {
            view.FirstDisplayedScrollingRowIndex = rowToShow - countVisible + 1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 一个非常实用的答案......值得更多的选票. (3认同)
  • 工作得很好 - 我使rowToShow可选,并将其设置为最后一行,如果调用者没有设置的话.现在它默认滚动到底部.可以添加另一个签名,以给它一个更好的名称. (3认同)

Fis*_*aen 10

只需在选择行后放置该行:

dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.SelectedRows[0].Index;
Run Code Online (Sandbox Code Playgroud)