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
            }
    
  • 相关阅读:
    傻瓜教程:asp.net(c#) 如何配置authentication,完成基于表单的身份验证
    ajax与php交互的get和post两种实现方式
    php 存储过程
    一万小时天才理论
    servlet阅读
    post and get
    合并两个有序数组(重新开始)
    Java参数传递问题
    一万小时(如何实现)阅读
    java IO 流的学习(我们到底能走多远系列1)
  • 原文地址:https://www.cnblogs.com/zhaobl/p/3360574.html
Copyright © 2011-2022 走看看