Это мой первый ТАК вопрос, поэтому, пожалуйста, направьте меня, если я допустил какие-либо ошибки.
Я новичок в программировании на C# и занимаюсь самообучением. Мне удалось найти много информации, похожей на мою проблему (задержка кода), но я не могу найти/извлечь решение для моей конкретной проблемы. Я пытался искать, но, возможно, с неправильными ключевыми словами... Кроме того, несмотря на повторное чтение и поиск, иногда ответы слишком сложные, чтобы я мог их различить; возможно, я прочитал свое решение, но не понял этого.
Вот моя установка и последующая проблема:
У меня есть DataGridView, который отображает данные из базы данных SQL Server, доступ к которым будет осуществляться через Интернет (в данный момент я разрабатываю/тестирую по локальной сети). Когда пользователь выбирает новую строку в DGV, остальная часть формы заполняется информацией на основе этой записи, и этот процесс происходит достаточно быстро.
Однако если пользователь прокручивает список (используя клавиши со стрелками), данные обновляются снова и снова во время прокрутки, что замедляет работу приложения. Кроме того, мне тоже кажется ненужным опрашивать сервер по каждой строке (пользователей будет много, но еще не тысячи).
Я думаю, что мое решение состоит в том, чтобы отложить выполнение кода, заполняющего остальную часть формы, до тех пор, пока пользователь не перейдет к нужной строке. Итак, подождите, пока они не выберут одну и ту же строку, скажем, на 1 секунду.
Ответы, которые я нашел до сих пор, похоже, эффективно устанавливают код «бомба замедленного действия», которая всегда будет выполняться после указанной задержки. Мне нужно отложить мой код, но затем выполнять его только в том случае, если пользователь все еще находится в той же строке, что и при инициации задержки.
Может кто-то указать мне верное направление? Или я подхожу к этому неправильно? Если хотите, попробуйте сформулировать ответ так, чтобы новичок мог либо понять его, либо использовать ключевые слова, которые можно найти.
Я уверен, что я не первый человек, столкнувшийся с этой проблемой — наверняка есть какой-то передовой подход к использованию DGV и его использованию для этой цели? Однако поиск SO для «кода задержки прокрутки c# datagridview» или «c# datagridview selectionchanged delay» не дает результатов, а другие поиски оказались безрезультатными.
Детали, которые могут быть необходимы или запрошены:
- Это приложение C# Windows Forms.
- Я использую Visual Studio 2012.
- Код, обновляющий форму, находится в блоке кода события SelectionChanged DGV.