почему DataGridView показывает обновление на шаг позади - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть winform, который включает DataGridView и Button среди нескольких других элементов управления. Я добавляю и удаляю столбцы и строки datagridview вручную. Метод RefreshContent() выполняет итерацию по некоторым массивам и обновляет сетку данных с помощью следующих

datagridview.Columns[i].Name = somestring;

или

datagridview.Rows.Add(someobject);

RefreshContent() вызывается в обработчике событий OnButtonClick, связывается с кнопка, которую я упомянул выше. Проблема в том, что я нажимаю кнопку, и с сеткой данных ничего не происходит, пока я не взаимодействую с другим элементом управления. Это похоже на то, что представление данных показывает обновление данных на шаг позади ... Я даже пытался добавить это в конец моего обработчика событий:

private void OnButtonClick(object s, EventArgs e)
{
  // .... some code
  RefreshContent();
  var ds = dataGridView1.DataSource;
  dataGridView1.DataSource = null;
  dataGridView1.DataSource = ds;
  dataGridView1.Refresh();
}

Безрезультатно. Я не очень хорош в winforms.

1 Ответ

0 голосов
/ 08 апреля 2020

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

Помните, что массивы обычно передаются по значению , а не по ссылке, если только не ref (c#)

...