Установка значения ячейки в datagridview не работает при загрузке формы
Это мой код для установки значения в datagridview
клетка:
For i = 0 To dvJOBranch.Rows.Count - 1
dvJOBranch.Rows(i).Cells.Item("XS").Value = 0
dvJOBranch.Rows(i).Cells.Item("S").Value = 0
dvJOBranch.Rows(i).Cells.Item("M").Value = 0
dvJOBranch.Rows(i).Cells.Item("L").Value = 0
dvJOBranch.Rows(i).Cells.Item("XL").Value = 0
Next
Он работает в событии кнопки, отображается событие формы, но не в форме загрузки, и нет ошибок.
Мой вопрос, почему он не работает в форме загрузки?
1 ответ
Я предполагаю, что вы используете DataGridView.AutoGenerateColumns
функциональность и даже если вы установите DataSource
собственность, DatagridView
не будет создавать столбцы, пока не отобразится сетка.
Это может объяснить, почему это не работает в formload
(сетка еще не инициализирована) и работает после (с показанным событием, например).
Так что возможно, что:
- вы пытаетесь получить доступ к элементам, которые еще не существуют (но код должен вызвать исключение)
- или вы получаете доступ к действительным строкам или столбцам, но они заменяются, когда сетка отображается в первый раз или снова привязывается к источнику данных, и поэтому ваш код не имеет никакого эффекта (вероятно, ваш случай, поскольку вы не упомянули исключение).
С помощью form_shown
возможно, это обходной путь, но я рекомендую вам использовать DataGridView.DataBindingComplete
событие, которое более специально разработано, чтобы справиться с этой ситуацией.
Смотрите также эти связанные проблемы (та же причина):