c# combobox 绑定枚举方式
Posted 东北大亨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# combobox 绑定枚举方式相关的知识,希望对你有一定的参考价值。
建立一个类 :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.ComponentModel; namespace WindowsFormsApplication1 { public class EnumDescription { public static string GetEnumDesc(Enum e) { FieldInfo EnumInfo = e.GetType().GetField(e.ToString()); DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])EnumInfo. GetCustomAttributes(typeof(DescriptionAttribute), false); if (EnumAttributes.Length > 0) { return EnumAttributes[0].Description; } return e.ToString(); } } }
页面代码 :
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); // Init(); Init1(); } public void Init() { comboBox1.DataSource = System.Enum.GetNames(typeof(ENUm_Type)); } /// <summary> /// 反射邦定枚举 /// </summary> private void Init1() { Array arrs = System.Enum.GetValues(typeof(ENUm_Type)); // 获取枚举的所有值 DataTable dt = new DataTable(); dt.Columns.Add("String", Type.GetType("System.String")); dt.Columns.Add("Value", typeof(int)); foreach (var arr in arrs) { string strText = EnumDescription.GetEnumDesc((ENUm_Type)arr); DataRow aRow = dt.NewRow(); aRow[0] = strText; aRow[1] = (int)arr; dt.Rows.Add(aRow); } comboBox1.DataSource = dt; comboBox1.DisplayMember = "String"; comboBox1.ValueMember = "Value"; } private void button1_Click(object sender, EventArgs e) { // 第一种实现方式 //ENUm_Type eT = ENUm_Type.tet_1; //comboBox1.SelectedIndex = comboBox1.FindString(eT.ToString()); //string str = comboBox1.SelectedItem.ToString(); // 第二种实现方式 int a = comboBox1.SelectedIndex; System.Diagnostics.Trace.WriteLine(comboBox1.SelectedItem); DataRowView dr = (DataRowView)(comboBox1.SelectedItem); ENUm_Type aE = (ENUm_Type)(dr.Row[1]); } public enum ENUm_Type { [Description("tet_1")] tet_1 = 1, [Description("tet_2")] tet_2 = 2, [Description("tet_3")] tet_3 = 3, } } }
以上是关于c# combobox 绑定枚举方式的主要内容,如果未能解决你的问题,请参考以下文章
c# comboBox控件绑定表字段问题。如何同时绑定多个comboBox呢,使其下拉列表的内容都是一样的 见详细补充
将 ComboBoxes 绑定到枚举......在 Silverlight 中!
ComboBox在WPF中的绑定示例:绑定项集合转换,及其源代码