P.S.是否有一種簡單的方法來獲取類型供應商的所有枚舉的集合,除了Unknown(根據Bill Wagner的規定,它的short/int值爲0)?
DbVendor[] values = Enum.GetValues(typeof(DbVendor))
.Cast<DbVendor>()
.Where(v => v != DbVendor.Unknown)
.ToArray();
要在友好名稱值相關聯,您可以使用DescriptionAttribute
,如圖this answer。處理Format
事件ComboBox
的顯示說明:
private void comboBoxVendor_Format(object sender, ListControlConvertEventArgs e)
{
DbVendor vendor = (DbVendor)e.ListItem;
e.Value = vendor.GetDescription();
}
注意:如果您的應用程序需要本地化的Description
屬性可能不是最好的選擇。相反,你可以使用字符串資源與名稱,如DisplayName_DbVendor_Oracle
,DisplayName_DbVendor_SqlServer
,等等,那麼你可以爲一個值檢索顯示名稱如下:
DbVendor vendor = ...;
string displayName = Properties.Resources.ResourceManager.GetString("DisplayName_DbVendor_" + vendor);
編輯:如果你需要通過描述值進行排序,只是改變了LINQ查詢,如下所示:
DbVendor[] values = Enum.GetValues(typeof(DbVendor))
.Cast<DbVendor>()
.Where(v => v != DbVendor.Unknown)
.OrderBy(v => v.GetDescription())
.ToArray();
的
可能重複[?我怎麼有自定義字符串格式化枚舉值枚舉綁定組合框中(http://stackoverflow.com/questions/796607/how -DO-I-有-AN-枚舉結合,組合框,與定製字符串格式化換-E num-valu) – nawfal 2013-06-08 23:44:31