Пока DataGridView обновлялся, прокрутка увеличивается каждый раз - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть gridView в приложении Windows Form.Я должен обновить его содержимое, когда мы добавим новую строку в базу данных.Я использую этот способ, чтобы добавить новую строку и обновить ее.Но когда у меня есть контент, который не помещается на странице, прокрутка видна.Когда я сдвигаю нижнюю часть страницы прокрутки и одновременно обновляюсь, прокрутка переходит вверх страницы, как решить проблему.

private void fillhistoryOfUpdateProcessDataGridView()
{
    dt = db.getHistoryOfUpdatedProcess();    

    dgwHistoryofProcess.Invoke(new Action(() => dgwHistoryofProcess.DataSource = dt));

    dgwHistoryofProcess.Invoke(new Action(() => dgwHistoryofProcess.Columns["islemAdi"].HeaderText = "İşlem Adı"));

    dgwHistoryofProcess.Invoke(new Action(() => dgwHistoryofProcess.Columns["islemBaslangicTarihi"].HeaderText = "İşlem Başlangıç Tarihi"));
    dgwHistoryofProcess.Invoke(new Action(() => dgwHistoryofProcess.Columns["islemBitisTarihi"].HeaderText = "İşlem Tamamlanma Tarihi"));
    dgwHistoryofProcess.Invoke(new Action(() => dgwHistoryofProcess.Columns["islemBitisTarihi"].ValueType = typeof(DateTime)));               
    dgwHistoryofProcess.Sort(dgwHistoryofProcess.Columns["islemBitisTarihi"], ListSortDirection.Descending);
    dgwHistoryofProcess.Invoke(new Action(() => dgwHistoryofProcess.Columns["islemDurumu"].HeaderText = "İşlem Durumu"));
    dgwHistoryofProcess.Invoke(new Action(() => dgwHistoryofProcess.Columns["hataLog"].HeaderText = "Hata Sebebi"));

    dgwHistoryofProcess.Invoke(new Action(() => dgwHistoryofProcess.Update()));

    dt.Dispose();
}

private void updateHistoryofUpdatedProcessDataGridView()
{
    dt = db.GuncellemeIslemGecmisiGetir();

    dgwIslemGecmisi.Invoke(new Action(() => dgwIslemGecmisi.DataSource = dt));

    dgwIslemGecmisi.Invoke(new Action(() => dgwIslemGecmisi.Update()));
    dt.Dispose();
}

1 Ответ

0 голосов
/ 13 ноября 2018

Я предлагаю перед обновлением найти текущую строку DataGridView.Затем после обновления снова установите позицию для этой записи.Будет проще, если вы также используете bindingSource.Псевдокод выглядит следующим образом:

private void updateHistoryofUpdatedProcessDataGridView()
{
    var current = bindingSource.Current as typeOfData

    // do the update


    int index = bindingSource.Find("ID", current.ID);
    bindingSource.Position = index;

}

Однако я думаю, что должен быть лучший способ, поэтому я следую за этим вопросом для других ответов.

...