DataGridView.La colonne(ColumnName comme une Chaîne de caractères) donne une erreur “la référence d'Objet n'est pas définie à une instance d'un objet”

C'est quelque chose qui a été m'énerve pour un temps, car il est facilement corrigé, mais pas souhaitable.

J'ai un DataGridView qui a 5 colonnes. La première est appelée ID.

Dans vb.net la ligne suivante donne une erreur "la référence d'Objet n'est pas définie à une instance d'un objet":

dgvJobs.Columns("ID").Visible = False ' ERROR
dgvJobs.Columns(0).Visible = False ' OK

De toute évidence en utilisant le nom est beaucoup mieux qu'une codés en dur la valeur de référence de la colonne, mais vous vous demandez s'il ya quelque chose que je peux faire pour que tout cela fonctionne correctement?

Le datagridview source de données est BindingSource de contrôle avec la source de données étant un ensemble de données.

EDIT: en Fonction de la réponse, j'ai créé la fonction suivante qui fait exactement ce que j'ai besoin de:

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
A noter également, la DataGridViewColumn classe a une propriété "HeaderText", qui indique le nom à Afficher sur la grille !

OriginalL'auteur Belliez | 2010-01-07