我有一个DataTable充当DataGridView的数据源
private readonly DataTable _processTable = new DataTable();
ProcessDataGrid.DataSource = _processTable;
我有一个填充此DataTable的方法(这样做时将填充DataGridView)
private void PopulateDataTable()
{
var processes = Process.GetProcesses();
foreach(var process in processes)
{
_processTable.Rows.Add(process.ProcessName);
}
}
我还有一个按钮,按下该按钮时会呼叫PopulateDataTable
private void RefreshButton_Click(object sender, System.EventArgs e)
{
_processTable.Rows.Clear();
// Refresh the process list
PopulateDataTable();
}
单击RefreshButton
后,数据源将被清除并正确更新,但是,它将在列表的一半位置选择一行,并滚动到DataGridView中的该值。
我想防止这种情况的发生,因此,当单击按钮时,数据源将像当前正在执行的那样进行更新,但是,无行会自动滚动到DataGridView中(用户相对于滚动条的当前位置)不会改变。)
我该怎么做?
答案 0 :(得分:1)
在刷新DataTable
之前,记下先前选择的行索引。然后刷新后再次选择同一行。
提示::dataGridViewControl.CurrentRow
是只读属性,因此请使用dataGridViewControl.CurrentCell
来读取和设置当前行。确保执行检查以查看CurentCell
属性是否为null
,并且要选择的行索引也不超出范围。