Comment basculer entre les DataGridViewTextBoxCell et DataGridViewComboBoxCell?
Je veux avoir un DataGridView qui a deux colonnes. La première colonne sera toujours de type DataGridViewComboBoxColumn. Selon la sélection dans cette colonne, je voudrais être en mesure de changer la cellule correspondante dans la deuxième colonne à une DataGridViewComboBoxCell ou un DataGridViewTextBoxCell.
Je pense, j'ai juste besoin de prendre la deuxième colonne de type DataGridViewColumn, mais ne pas comprendre la mécanique de la façon de changer le type de cellule à la volée.
Je travaille avec VB.NET dans Visual Studio 2005.
Merci d'avance!
Mise à jour: Un moyen de contourner cela, je suppose, est de faire de la deuxième colonne comme un DataGridViewComboBoxColumn, et de modifier les attributs de la cellule de façon à ce qu'elle se comporte comme une liste déroulante, ou comme un (modifiable) déroulante avec n éléments. Ce dernier semble assez comme une zone de texte que je pourrais vivre avec elle, et il n'implique pas de changer le type de la cellule.
OriginalL'auteur John | 2009-11-18
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas l'VB.Net version,mais j'espère que ce rapide C# extrait de vous aider ou de vous diriger dans la bonne direction.
Dans cet exemple, j'ai créé un simple DataGridView avec 2 colonnes. Le premier étant un DataGridViewComboBox remplie avec deux choix: "Texte" ou "Combo".
La deuxième colonne est fixé initialement à DataGridViewTextBoxColumn de la designer.
J'ai la poignée de la CurrentCellDirtyStateChanged événement sur le DataGridView. Je vérifie si la cellule est sale et seule case de la première colonne (La zone de liste déroulante). Tu dois appeler le CommitEdit pour obtenir la nouvelle valeur dans la zone de liste modifiable ou autre chose que vous serez à la recherche à la valeur précédente. Selon la sélection dans la liste déroulante puis je remplacer la cellule dans la colonne 2, avec une nouvelle cellule de ce type.
Vous ajoutez votre propre logique (remplir les menus déroulants et de gérer la valeur). Vous pourriez vouloir stocker de la valeur, puis le mettre dans la cellule ou quoi que ce soit.
Voici le code que j'ai utilisé et fait un rapide test sur:
Voici un rapide VB traduction, que j'ai testé et fonctionne.
Fin De La Classe
Vous allez perdre toute valeur stockée dans cette colonne, vous devez tout d'abord l'enregistrer.
Jon
Fonctionne très bien. Merci!!!!
OriginalL'auteur Jon Comtois
Vous pouvez créer votre propre modèle de cellule qui héberge un contrôle utilisateur. Dans le contrôle de l'utilisateur que vous ajoutez un contrôle textbox et un contrôle combobox, et ajouter une méthode/propriété afin de montrer et cacher un autre.
Cet exemple crée un bouton radio de la cellule, il n'est pas difficile de modifier le code pour l'hôte d'un contrôle de l'utilisateur.
OriginalL'auteur Sheng Jiang 蒋晟
OriginalL'auteur Abhijeet