zoukankan      html  css  js  c++  java
  • 给winform的Combox绑定枚举类型

    网上搜索到一些代码,感觉不合适自己写了一个。

    用于绑定的枚举泛型
    /// <summary>
    /// 用于Combox显示绑定的对象
    /// </summary>
    public class BindComboxEnumType<T>
    {
    /// <summary>
    /// 类型的名字
    /// </summary>
    public string Name { get; set; }

    /// <summary>
    /// 类型
    /// </summary>
    public T Type { get; set; }

    private static readonly List<BindComboxEnumType<T>> bindTyps;

    static BindComboxEnumType()
    {
    bindTyps
    = new List<BindComboxEnumType<T>>();

    foreach(var name in Enum.GetNames(typeof(T)))
    {
    bindTyps.Add(
    new BindComboxEnumType<T>()
    {
    Name
    = name,
    Type
    = (T)Enum.Parse(typeof(T), name)
    });
    }
    }

    /// <summary>
    /// 绑定的类型数据
    /// </summary>
    public static List<BindComboxEnumType<T>> BindTyps
    {
    get { return bindTyps; }
    }
    }
    然后在初始化的时候,把枚举类型绑定到DataSource里就行。

            /// <summary>
            /// 控件初始化
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void UCMessage_Load(object sender, EventArgs e)
            {
                cPlusTypeBindTypeBindingSource.DataSource = BindComboxEnumType<CPlusType>.BindTyps;
                cbDirection.DataSource = BindComboxEnumType<MessageDirection>.BindTyps;
                cbDirection.DisplayMember = "Name";
                cbDirection.ValueMember = "Type";
            }
    
    

    注意,需要设置combox的DisplayMember和ValueMember,可以在代码里设置,也可以直接在属性框里设置。同时,也可以在Combox里绑定上对应的值对象,需要将bindingSource里的对应变量绑定到SelectedValue里,绑定到selectedItem会出错。

    image

    作者:Yahle
    原载:http://www.cnblogs.com/yahle
    版权所有。转载时必须以链接形式注明作者和原始出处。

    欢迎赞助:

  • 相关阅读:
    Ubuntu18.04 修改DNS
    windows系统如何通过Xshell 客户端连接 linux系统(主要介绍ubuntu系统)
    如何获取 docker 容器(container)的 ip 地址(转)
    基于Docker搭建LNMP环境(转)
    高并发处理【电商抢购】(转)
    [golang] Glide 包管理
    如何查看2to3.PY的帮助文档
    python模块之lib2to3(py2转py3自动化工具)
    python模块之keyword
    python模块之JSON
  • 原文地址:https://www.cnblogs.com/yahle/p/1807946.html
Copyright © 2011-2022 走看看