2013-08-30 2 views
1

Это мой код для установки значения в 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 

Его работа в кнопках события, показанная форма события, но не в виде нагрузки, и ошибок нет.

Мой вопрос: почему он не работает в форме нагрузки?

+0

есть ли ошибка в виде нагрузки? –

+0

нет ошибки в форме загрузки, но я уже работаю, и теперь он работает. – Matthew

ответ

3

Я полагаю, что вы используете функциональную функцию DataGridView.AutoGenerateColumns, и даже если вы установили свойство DataSource, DatagridView не будет создавать столбцы, пока не отобразится сетка.

Это может объяснить, почему он не работает в formload (сетка еще не инициализирована), и она работает после (например, с указанным событием).

Так что возможно, что:

  • вы пытаетесь получить доступ к элементам, которые еще не существуют (но код должен вызвать исключение)
  • или доступ допустимые строки или столбцы, но они заменяются при сетка отображается в первый раз или снова привязывается к источнику данных, и поэтому ваш код не имеет эффекта (возможно, ваш случай, поскольку вы не упоминаете об исключении).

Использование form_shown это может быть, возможно, обходной путь, но я рекомендую вам использовать DataGridView.DataBindingComplete событие, которое более особенно предназначен для обработки этой ситуации.

Смотрите также эти связанные проблемы (той же причине):

+0

Очень ясное объяснение здесь, сэр, спасибо за информацию :) – Matthew