方法一:
枚举类型直接绑定
enum TestEnum {
zero=0,
one=1,
two=2
}
ComboBox cbo = new ComboBox();
cbo.DataSource = System.Enum.GetNames(typeof(TestEnum));
TestEnum test = TestEnum .one;
cbo.SelectedIndex = this.cbo.FindString(test.ToString());
//取值
TestEnum testenum = (TestEnum)Enum.Parse(typeof(TestEnum) ,cbo.SelectedItem.ToString() ,false)
方法二:
/// <summary>
/// 将指定的枚举型绑定至指定的ComboBox,结果表示是否绑定成功。
/// 用法示例:Bind<LogType>(comboBox1);
/// </summary>
/// <param name="cb">下拉框。</param>
/// <param name="type">枚举类型。</param>
/// <returns></returns>
public static bool BindEnumToComboBox<T>(ComboBox cb)
{
Type type = typeof(T);
if (!type.IsEnum || Enum.GetValues(type).Length == 0 || cb == null)
return false;
cb.Items.Clear();
foreach (var item in Enum.GetValues(type))
{
cb.Items.Add(item.ToString());
}
// 默认选择第0项。
cb.SelectedIndex = 0;
// 这里不是必需的,但是由于枚举型不能有额外的,所以设置为 DrawDownList.
cb.DropDownStyle = ComboBoxStyle.DropDownList;
return true;
}
/// <summary>
/// 根据ComboBox的选定字符串,返回指定的枚举类型。如果转换失败,则返回缺少值。
/// 用法示例:LogType lt = GetEnumFromComboBox<LogType>(comboBox1);
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="cb"></param>
/// <returns></returns>
public static T GetEnumFromComboBox<T>(ComboBox cb)
{
T t = default(T); // 先初始化的默认值。
try
{
t = (T)Enum.Parse(typeof(T), cb.SelectedItem.ToString()); // 进行类型转换。
}
catch (Exception ex)
{
Console.WriteLine(ex.Message); // 可以根据需要做相应的异常处理。
}
return t;
}
public enum SiemensPLCS
{
S1200 = 1,
S300 = 2,
S400 = 3,
S1500 = 4,
S200Smart = 5,
S200 = 6
}
方法调用:
//把西门子的型号绑定到名为cbPLCModel的ComboBox
BindEnumToComboBox<SiemensPLCS>(cbPLCModel);
//从SiemensPLCS枚举框中选取值
SiemensPLCS PLCmodel = GetEnumFromComboBox<SiemensPLCS>(cbPLCModel);
方法三:
foreach (var v in typeof(AA).GetFields())
{
if (v.FieldType.IsEnum == true)
{
this.comboBox1.Items.Add(v.Name);
}
}
if (comboBox1.Items.Contains("ZDesigner GK888t (EPL)"))
{
comboBox1.Text = "ZDesigner GK888t (EPL)";
}
this.comboBox1.SelectedIndex = 1;
方法四:
public static class EnumManager<TEnum>
{
private static DataTable GetDataTable()
{
Type enumType = typeof(TEnum); // 获取类型对象
FieldInfo[] enumFields = enumType.GetFields(); //获取字段信息对象集合
DataTable table = new DataTable();
table.Columns.Add("Name", Type.GetType("System.String"));
table.Columns.Add("Value", Type.GetType("System.Int32"));
//遍历集合
foreach (FieldInfo field in enumFields)
{
if (!field.IsSpecialName)
{
DataRow row = table.NewRow();
row[0] = field.Name; // 获取字段文本值
row[1] = Convert.ToInt32(field.GetRawConstantValue()); // 获取int数值
//row[1] = (int)Enum.Parse(enumType, field.Name); 也可以这样
table.Rows.Add(row);
}
}
return table;
}
public static void SetListControl(ListControl list)
{
list.DataSource = GetDataTable();
list.DataTextField = "Name";
list.DataValueField = "Value";
list.DataBind();
}
}
public enum BookingStatus {
未提交 = 1,
已提交,
已取消,
已完成 = 6
}
调用
EnumManager<BookingStauts>.SetListControl(ddlBookingStatus);
EnumManager<TicketStatus>.SetListControl(rblTicketStatus);