Мое приложение требует регулярного автоматического обновления данных для данных из базы данных, чтобы отразить изменения в системе, что не является проблемой.C# - Обновление Datagridview
Проблема заключается в том, что при обновлении datagridview он временно замораживает пользовательский интерфейс и предотвращает прокрутку. Поэтому я могу представить два возможных решения:
Чтобы приостановить обновления при активном событии пользовательского интерфейса, хотя я не знаю, каким будет глобальное пользовательское событие?
Или использовать фоновый рабочий для обновления datagridview - хотя я не знаю, как вы обновляете пользовательский интерфейс от рабочего стола?
using (SqlDataAdapter a = new SqlDataAdapter("SELECT Name,Value FROM dbo.IOData", c))
{
DataTable IOProcData = new DataTable();
// Populate data table
a.Fill(IOProcData);
// Record displayed row
int temp = dataGridView1.FirstDisplayedScrollingRowIndex;
IOBinding.DataSource = IOProcData;
// Reset displayed row
if (temp > 0)
{
dataGridView1.FirstDisplayedScrollingRowIndex = temp;
}
}
EDIT:
Есть ли событие, которое срабатывает, когда полосы прокрутки из DataGridView сначала щелкнул как MouseDown, но и для скроллинга? Событие прокрутки происходит после того, как действие прокрутки будет так поздно.
Вы считаете, что используете класс SqlDependency, где вам нужно будет настроить загрузку данных по-разному. https://msdn.microsoft.com/en-us/library/62xk7953%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 –
Интересный вариант, хотя скорость, с которой данные будут меняться, может быть довольно быстрой <100 мс в зависимости от подключения OPC и активности ПЛК. Таким образом, скорость обновления пользовательского интерфейса будет выше, чем периодический метод. –