zoukankan      html  css  js  c++  java
  • winform开发中绑定combox到枚举

    开发中需要根据下拉框的选择处理一些业务逻辑,使用ID值或Text值都不利于代码维护,所以可以写个扩展方法绑定到枚举上。

     public static class Extensions
        {
    
            /// <summary>
            /// 绑定ComboBoxEx数据源到枚举类型
            /// </summary>
            /// <param name="cmb"></param>
            /// <param name="enumType"></param>
            /// <param name="selectIndex"></param>
            public static void BindToEnumName(this ComboBox cmb, Type enumType, int selectIndex = 0)
            {
                cmb.DataSource = Enum.GetNames(enumType);
            }
    
            /// <summary>
            ///  获取选择项
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="cmb"></param>
            /// <returns></returns>
            public static T GetSelectedItemToEnum<T>(this ComboBox cmb)
            {
                return (T)Enum.Parse(typeof(T), cmb.SelectedItem.ToString(), false);
            }
    
            /// <summary>
            /// 设置选定项
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="cmb"></param>
            /// <param name="t"></param>
            public static void SetSelectedItemToEnum<T>(this ComboBox cmb, T t)
            {
                cmb.SelectedItem = t.ToString();
            }
    
        }
    

    调用方法:

            private void button1_Click(object sender, EventArgs e)
            {
                this.comboBox1.BindToEnumName(typeof(TypeEnum));
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                var type = this.comboBox1.GetSelectedItemToEnum<TypeEnum>();
                this.textBox1.Text = type.ToString() + ":" + (int)type;
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                this.comboBox1.SetSelectedItemToEnum(this.textBox2.Text); 
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                this.comboBox1.SetSelectedItemToEnum<TypeEnum>((TypeEnum)(int.Parse(this.textBox3.Text)));
            }
    
            public enum TypeEnum
            {
                类型1 = 1,
                类型2 = 2
            }
    
  • 相关阅读:
    数据库的事务
    二路归并排序C++ 递归实现
    2020cocoapods安装和更新repo
    iOS 一个对象的等同性
    chrome插件离线安装程序包无效
    OC 直接使用使用实例变量和通过属性来访问实例变量的区别
    数据结构与算法(八),查找
    数据结构与算法(七),排序
    数据结构与算法(六),图
    数据结构与算法(五),优先队列
  • 原文地址:https://www.cnblogs.com/zhaobl/p/3360574.html
Copyright © 2011-2022 走看看