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动态绑定赋值

c# comboBox控件绑定表字段问题。如何同时绑定多个comboBox呢,使其下拉列表的内容都是一样的 见详细补充

将 ComboBoxes 绑定到枚举......在 Silverlight 中!

ComboBox在WPF中的绑定示例:绑定项集合转换,及其源代码

2021-11-22 WinFrom面试题 ComboBox控件绑定枚举类型如何实现?

C# WPF ComboBox - 排除绑定数据的最后一行(或空格)(从 Microsoft Access 绑定)