2010-08-27 5 views
1

J'ai déjà réussi la saisie semi-automatique dans une zone de liste déroulante. J'ai utilisé l'événement leave pour définir la sélection sur null si l'utilisateur tape quelque chose qui n'est pas dans la liste.Comment faire pour que la saisie semi-automatique fonctionne dans un DataGridViewComboBoxColumn?

Maintenant, je veux le faire dans un DataGridViewComboBoxColumn. Toutefois, les propriétés habituelles comme AutoCompleteMode et AutoCompleteSource sont manquantes. J'ai entendu dire qu'il y avait un moyen de faire cela en utilisant le casting, mais je ne peux pas lire les instructions du langage VB trop bien. Idéalement, je veux faire une nouvelle classe dérivée afin que je puisse facilement utiliser cette chose encore et encore.

L'autre problème est que j'ai besoin de savoir quel événement intercepter afin de réinitialiser la liste déroulante à son ancienne valeur ou null si l'élément ne figure pas dans la liste.

L'aide serait appréciée! Merci.

Répondre

5

Vous pouvez obtenir cette fonctionnalité en implémentant l'événement EditingControlShowing de la grille. Essentiellement lorsque vous modifiez une colonne combobox, le contrôle d'édition est un combobox donc par coulée, vous pouvez configurer les propriétés de saisie semi-automatique

void grdPerformanceScenario_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
    { 
     if (e.Control is ComboBox) 
     { 
      (e.Control as ComboBox).AutoCompleteMode = AutoCompleteMode.Suggest; 
      (e.Control as ComboBox).AutoCompleteSource = AutoCompleteSource.ListItems; 
     } 
    } 
+0

oui, je l'ai depuis compris comment importer mes propres contrôles dans le datagridview. Je préfère cependant créer mes propres classes de colonnes pour les boîtes activées pour la saisie semi-automatique, afin que je puisse insérer les propriétés dont il a besoin dans la partie de configuration de colonnes de dgv au lieu de gérer cet événement encore et encore. –

0

Il y a un AutoComplete pour DataGridViewComboBoxColumn.

Par exemple:

DataGridViewComboBoxColumn comboBox = DataGridViewComboBoxColumn(); 
combobox.AutoComplete = true;