136 votes

Lier une énumération à une boîte combo WinForms, puis la définir

De nombreuses personnes ont répondu à la question de savoir comment lier une énumération à une boîte combo dans WinForms. C'est comme ça :

comboBox1.DataSource = Enum.GetValues(typeof(MyEnum));

Mais cela ne sert à rien si l'on ne peut pas définir la valeur réelle à afficher.

J'ai essayé :

comboBox1.SelectedItem = MyEnum.Something; // Does not work. SelectedItem remains null

J'ai également essayé :

comboBox1.SelectedIndex = Convert.ToInt32(MyEnum.Something); // ArgumentOutOfRangeException, SelectedIndex remains -1

Quelqu'un a-t-il une idée de la manière de procéder ?

0voto

Pour l'instant, j'utilise la propriété Items plutôt que la DataSource, ce qui signifie que je dois appeler Add pour chaque valeur de l'énumération, mais il s'agit d'une petite énumération, et le code est temporaire de toute façon.

Ensuite, je peux simplement faire le Convert.ToInt32 sur la valeur et la définir avec SelectedIndex.

Solution temporaire, mais YAGNI pour l'instant.

Merci pour les idées, je les utiliserai probablement lorsque je ferai la version correcte après avoir reçu une série de commentaires des clients.

0voto

Johan Points 334

Vieille question peut-être ici mais j'ai eu le même problème et la solution était facile et simple, j'ai trouvé ceci http://www.c-sharpcorner.com/UploadFile/mahesh/1220/

Il utilise la base de données et fonctionne bien, alors allez-y.

0voto

comboBox1.DataSource = Enum.GetValues(typeof(MyEnum));

comboBox1.SelectedIndex = (int)MyEnum.Something;

comboBox1.SelectedIndex = Convert.ToInt32(MyEnum.Something);

Les deux fonctionnent pour moi. Vous êtes sûr qu'il n'y a pas un autre problème ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X