2009-12-16 2 views
3

J'ai un DataGridView chargé de montrer un bit de données et deux de mes colonnes permettent l'entrée de l'utilisateur en utilisant des comboboxes. Le problème est qu'une colonne n'a besoin que d'afficher des valeurs prédéfinies dans sa liste, mais que l'autre doit à la fois montrer les préréglages et permettre à l'utilisateur d'entrer ses propres valeurs.Détection de la colonne qui affiche un contrôle d'édition dans un datagridview

i accomplissons ceci en montrant le contrôle d'édition pour le combobox avec ce morceau de code:

Private Sub DGV_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DGV.EditingControlShowing 
    'todo: figure out which control is being edited (the reason or the action) and only allow the action column to allow user input 
    If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then 
     Dim cb As ComboBox = e.Control 
     cb.DropDownStyle = ComboBoxStyle.DropDown 
    End If 
End Sub 

Cela permet l'entrée d'utilisateur sur les deux comboboxes dans le DGV, mais je veux seulement permettre l'utilisateur entrée pour l'un d'entre eux.

Est-il possible de détecter quelle colonne de la DGV provient du contrôle d'édition afin que je n'exécute pas ce code pour les deux colonnes?

Ai-je une meilleure façon de le faire?

Répondre

3

Qu'en est-il de e.Control.EditingControlDataGridView.CurrentCell.ColumnIndex?

Ou peut-être juste DGV.CurrentCell.ColumnIndex?

+0

travaillé parfaitement! Merci! il y a tellement de choses à contrôler, je me perds facilement. – jrsconfitto

+0

Que faire si je veux vérifier le texte de l'en-tête? comme ... 'Si DGV.Column.HeaderText =" xyz "puis' – Arbaaz

+0

Nevermind, j'ai trouvé la solution .. 'Si DataGridView1.Columns (DataGridView1.CurrentCell.ColumnIndex) .HeaderText =" Entrer Quantité "Then' – Arbaaz

Questions connexes