這只是一個調查ComboBox
來源於Enum
字符串值的最佳方式的一種調查。WinForms組合框DataBound到枚舉 - 格式字符串
我知道可以數據綁定一個ComboBox
到Enum
像這樣:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
comboBoxNames.DataSource = Enum.GetValues(typeof (Names));
}
}
public enum Names
{
JohnDoe,
JaneDoe,
JohnJackson,
JackJohnson
}
這是結果:
我想格式化ComboBox
這樣的顯示值PascalCase字符串值之間有一個空格,同時也會通過所選項目的Enum
值,我可以在switch
聲明以後:
switch ((Names)comboBoxNames.SelectedItem)
{
case Names.JohnDoe:
// Do something John Doe-specific
break;
case Names.JaneDoe:
// Do something Jane Doe-specific
break;
case Names.JohnJackson:
// Do something John Jackson-specific
break;
case Names.JackJohnson:
// Do something Jack Johnson-specific
break;
}
我知道有一個ComboBox.FormatString
屬性,但我不知道如何使用它來格式化Names
枚舉,我想要的方式。
這可能嗎?我不希望在Enum
上使用屬性,因爲使用這些屬性最終會涉及到使用反射,這看起來像是過度殺傷似乎很簡單的事情。任何幫助將非常感激。
這確實有效,但我希望避免事件,因爲我有很多下拉菜單,而且我不喜歡用事件處理程序(個人偏好)來污染代碼隱藏。使用可從ComboBox控件直接訪問的屬性是不可能的? – 2013-04-05 06:37:05
據我所知沒有可能的方式來格式化沒有事件的項目,並仍然保持枚舉值。 – 2013-04-05 07:19:55