Créer la liste déroulante options de enum dans un DataGridView
J'ai actuellement une classe et je suis en train de créer une simple interface GUI pour créer une collection de cette classe. La plupart des attributs de cette classe sont des chaînes de caractères. Cependant, l'un des attributs que je veux que l'utilisateur soit en mesure de définir est un Enum. Donc, je voudrais de l'interface utilisateur, d'avoir un dropdownlist pour cette enum, pour empêcher l'utilisateur d'entrer une valeur qui n'est pas valide. Actuellement, je suis dans la liste initiale des objets, en les ajoutant à un DataTable et le réglage de la source de données de mon DataGridView à la table. Fonctionne très bien, même crée une case à cocher de la colonne pour une propriété Booléenne. Mais, je ne sais pas comment faire de la colonne pour les enum dans un dropdownlist. Je suis à l'aide de C# et de .NET 2.0.
Aussi, j'ai essayé de l'affectation de la source de données de la DataGridView à la liste de mes objets, mais lorsque je le fais, il ne permet pas de l'enum et je suis incapable de créer de nouvelles lignes dans le DataGridView, mais je ne suis certainement pas lié à l'utilisation d'un DataTable que ma source de données, il a été tout simplement l'option que j'ai semi-travail.
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si cela fonctionnerait avec un DataGridView colonne, mais il fonctionne avec des zones de liste modifiables:
et:
Mise à JOUR: Il fonctionne avec DataGridView colonnes de trop, n'oubliez pas de définir le type de valeur.
Ou, si vous avez besoin de faire quelques filtrage de l'agent recenseur des valeurs, vous pouvez faire une boucle par
Enum.GetValues(typeof(EnumeratorName))
et ajouter ceux que vous souhaitez à l'aide de:Comme un de côté, plutôt que d'utiliser une Table de données, vous pouvez définir la source de données de la DataGridView à un BindingSource objet, avec la source de données de la BindingSource ensemble de l'objet à un
BindingList<Your Class>
, qui vous renseigner en passant unIList
dans le constructeur.En fait, je serais curieux de savoir de quelqu'un, si c'est préférable à l'aide d'un DataTable dans les situations où vous n'en avez pas (c'est à dire qu'il est retourné à partir d'une base de données d'appel).
Cela a fonctionné pour moi