Je réalise que ce post est plus ancien et pour Asp.net, mais je voulais fournir une solution que j'ai utilisée récemment pour un projet c# Windows Forms. L'idée est de construire un dictionnaire où les clés sont les noms des éléments énumérés et les valeurs sont les valeurs énumérées. Vous liez ensuite le dictionnaire à la combobox. Voir une fonction générique qui prend une ComboBox et un Enum Type comme arguments.
private void BuildComboBoxFromEnum(ComboBox box, Type enumType) {
var dict = new Dictionary<string, int>();
foreach (var foo in Enum.GetValues(enumType)) {
dict.Add(foo.ToString(), (int)foo);
}
box.DropDownStyle = ComboBoxStyle.DropDownList; // Forces comboBox to ReadOnly
box.DataSource = new BindingSource(dict, null);
box.DisplayMember = "Key";
box.ValueMember = "Value";
// Register a callback that prints the Name and Value of the
// selected enum. This should be removed after initial testing.
box.SelectedIndexChanged += (o, e) => {
Console.WriteLine("{0} {1}", box.Text, box.SelectedValue);
};
}
Cette fonction peut être utilisée comme suit :
BuildComboBoxFromEnum(comboBox1,typeof(Response));