[C#] 如何使DataGridView显示选定的行?


Answers

这个滚动到选定的行,而不是放在顶部。

dataGridView1.CurrentCell = dataGridView1.Rows[index].Cells[0];
Question

我需要强制DataGridView显示选定的row

总之,我有一个textbox ,根据输入到textbox textbox来更改DGV选择。 发生这种情况时,选择将更改为匹配的row

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

谢谢!




做这样的事情:

dataGridView1.CurrentCell = dataGridView1.Rows[index].Cells[0];

只有在第一列可见的情况下才有效。 如果它隐藏,你会得到一个例外。 这是更安全的:

var column = dataGridView1.CurrentCell != null ? dataGridView1.CurrentCell.ColumnIndex : dataGridView1.FirstDisplayedScrollingColumnIndex; dataGridView1.CurrentCell = dataGridView1.Rows[iNextHighlight].Cells[column];

如果目标行已经在屏幕上,这将重置没有滚动的选择。 它还保留当前的列选择,这可以在您允许内联编辑的情况下发生。




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

dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.SelectedRows[0].Index;



请注意,当DataGridView未启用时,设置FirstDisplayedScrollingRowIndex会将列表滚动到所需的行,但滚动条不会反映其位置。 最简单的解决方案是重新启用和禁用DGV。

dataGridView1.Enabled = true;
dataGridView1.FirstDisplayedScrollingRowIndex = index;
dataGridView1.Enabled = false;