Это то, что меня давно беспокоит, так как это легко исправить, но не желательно.
У меня есть DataGridView, который имеет 5 столбцов. Первый называется ID.
В vb.net следующая строка выдает ошибку «Ссылка на объект не установлена для экземпляра объекта»:
dgvJobs.Columns("ID").Visible = False ' ERROR
dgvJobs.Columns(0).Visible = False ' OK
Очевидно, что использование имени намного лучше, чем жестко закодированное значение для ссылки на столбец, но интересно, могу ли я что-нибудь сделать, чтобы это работало правильно?
Источником данных сетки данных является элемент управления BindingSource, а источником данных является набор данных.
РЕДАКТИРОВАТЬ: На основе ответа я создал следующую функцию, которая выполняет именно то, что мне нужно:
Private Function GetColName(ByVal name As String, ByRef dgv As DataGridView) As Integer
Dim retVal As Integer
For Each col As DataGridViewColumn In dgv.Columns
If col.HeaderText = name Then
retVal = col.Index
Exit For
End If
Next
Return retVal
End Function
Useage:
dgvJobs.Columns(GetColName("ID", dgvJobs)).Visible = False