Можно ли загружать элементы из Enum в ComboBox в .NET 3.5? - PullRequest
2 голосов
/ 26 апреля 2010

Можно ли загружать элементы из Enum в ComboBox в .NET 3.5?

Ответы [ 2 ]

10 голосов
/ 26 апреля 2010

Да.

combobox.DataSource = Enum.GetValues(typeof(SomeEnum));
0 голосов
/ 26 апреля 2010

Вот код, который мы использовали в недавнем проекте. Он обрабатывает локализованные строки Enum (передавая объект ResourceManager) и напрямую заполняет массив .Items вместо использования DataSource - это полезно для заполнения ComboBox, включая установку его .SelectedItem, перед его или его родительские элементы управления видимы.

public static void PopulateComboBox<T>(ComboBox box, ResourceManager res) {
    box.FormattingEnabled = true;
    ListControlConvertEventHandler del = delegate(object sender, ListControlConvertEventArgs e) {
        e.Value = res.GetString(e.Value.ToString());
    };
    box.Format -= del;
    box.Format += del;
    box.BeginUpdate();
    box.Items.Clear();
    foreach(T value in Enum.GetValues(typeof(T))) {
        box.Items.Add(value);
    }
    box.EndUpdate();
}

Используйте это как:

PopulateComboBox<MyEnum>(myComboBox, MyEnumStrings.ResourceManager);
...