DataGridView отстает на секунду с большими обновлениями данных - PullRequest
0 голосов
/ 15 декабря 2009

У меня есть DataGridView около 400 строк и 10 столбцов. Когда пользователь впервые отображает эту таблицу, он получает все данные с сервера и заполняет таблицу. DGV использует DataTable в качестве источника данных, и при обновлении DataTable я использую row.BeginEdit / EndEdit и acceptChanges, но когда само представление обновляется, оно задерживается на секунду, пока обновляется весь DGV. Мне интересно, есть ли способ сделать это гладким, чтобы, например, если пользователь прокручивает данные и обновляет их, он не прерывал прокрутку. Или, если пользователь перемещает дисплей по экрану и он обновляется, он не прерывается. Есть простой способ сделать это? Если нет, есть ли возможность запретить DGV обновлять представление до тех пор, пока не закончатся все события, поэтому оно не будет перекрашено, пока пользователь не прекратит прокрутку, перетаскивание и т. Д.?

Ответы [ 3 ]

0 голосов
/ 20 октября 2010

Первая идея, которая приходит мне в голову, - это использовать BackgroundWorker. Затем, пока ваш BackgroundWorker обновляется, он не занимает основной поток, то есть ваш поток с графическим интерфейсом.

0 голосов
/ 20 октября 2010

Попробуйте запустить отладчик / профилировщик, чтобы определить, какая часть является реальной причиной замедления. Как только вы выясните, какие строки являются виновником, вам будет легче ответить на этот вопрос.

0 голосов
/ 15 декабря 2009

В прошлом я обнаружил, что проблемы с медлительностью могут быть связаны со свойствами авторазмера. Вот еще несколько идей: Быстрые исправления для медленного DataGridView

...