【问题标题】:Why is a row in my DataGridView being automatically selected when updating the data source?为什么更新数据源时会自动选择我的 DataGridView 中的一行?
【发布时间】:2018-10-17 08:34:50
【问题描述】:

我有一个作为 DataGridView 数据源的 DataTable

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 中的 no row in 自动滚动到(用户相对于滚动条的当前位置不变。)

我怎样才能做到这一点?

【问题讨论】:

    标签: c# winforms datagridview datatable


    【解决方案1】:

    在刷新DataTable 之前记下之前选择的行索引。然后刷新后再次选择同一行。

    提示: dataGridViewControl.CurrentRow 是一个只读属性,因此使用dataGridViewControl.CurrentCell 来读取和设置当前行。确保您执行检查以查看 CurentCell 属性是否为 null,并且您将要选择的行索引没有超出范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-29
      • 2011-08-01
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2017-05-27
      相关资源
      最近更新 更多