Почему строка в моем DataGridView автоматически выбирается при обновлении источника данных? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть 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 (текущая позиция пользователя относительночтобы полоса прокрутки не изменилась.)

Как мне это сделать?

1 Ответ

0 голосов
/ 17 октября 2018

Запишите ранее выбранный индекс строки перед обновлением DataTable.Затем снова выберите ту же строку после ее обновления.

Подсказка: dataGridViewControl.CurrentRow - свойство только для чтения, поэтому используйте dataGridViewControl.CurrentCell как для чтения, так и для установки текущей строки.Убедитесь, что вы реализовали проверку, чтобы увидеть, является ли свойство CurentCell null или нет, а также индекс строки, который вы собираетесь выбрать, НЕ выходит за границы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...