是否可以将项目从Enum加载到.NET 3.5中的ComboBox?
是否可以将项目从Enum加载到.NET 3.5中的ComboBox?
是。
combobox.DataSource = Enum.GetValues(typeof(SomeEnum));
这是我们在最近的一个项目中使用的一些代码。 它处理本地化的Enum字符串(通过传入ResourceManager
对象)并直接填充.Items
数组而不是使用DataSource – 这对于填充ComboBox
很有用,包括设置它的.SelectedItem
,然后才能使它或它的父控件可见。
public static void PopulateComboBox(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(myComboBox, MyEnumStrings.ResourceManager);