Правильное использование DataGridView? - PullRequest
0 голосов
/ 05 ноября 2019

Мое приложение должно позволять пользователю просматривать таблицу (он же «карта») 14 x 28 с осями X и Y, загруженными из микроконтроллера (MCU). Это можно отредактировать и отправить обратно в микроконтроллер. У меня есть два массива, которые содержат карту GUI и карту MCU, которая позволяет помечать любые различия.

У меня есть DataGridView, который отображает данные. Это работает с исходными данными. Я просто не могу получить новые данные для обновления в DataGridView. DataGridView находится в форме в дочернем Mdi. Вот как я командую изменениями:

'CalDataTable is the DataGridView
'Map is an array of Single

CalDataTable.Rows.Clear()
CalDataTable.Columns.Clear()

For j As Integer = 1 To 16   'Loop through data and populate table
  For i As Integer = 1 To 24
    CalDataTable.Rows(j).Cells(i).Value = Map(i - 1, j - 1)
  Next
Next

Это событие запускается по щелчку в строке меню родительского элемента Mdi, и данные не обновляются. Однако, когда я запускаю обновление через событие кнопки в форме MDI Child, оно работает как чудо.

Использую ли я не тот инструмент или чего еще мне не хватает?

1 Ответ

0 голосов
/ 05 ноября 2019

Вызов .Rows.Clear() и .Columns.Clear() делает больше, чем просто очистка данных. Это фактически удаляет строки и столбцы из сетки. В сетке больше нет ячеек. Вы этого не хотите. Это не похоже на Excel, где рабочая область все еще там, даже когда вы удаляете вещи. Вам нужно, чтобы определения столбцов и записи строк все еще существовали.

Вместо этого переберите каждую ячейку и установите пустое значение, будь то 0, пустая строка или что-то еще. Или, поскольку похоже, что следующий цикл все равно посетит каждую ячейку, просто полностью удалите строки Clear().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...