zoukankan      html  css  js  c++  java
  • Winfrom 中 ComboBox 绑定数据后设置选定项问题

    在为 ComboBox 当定数据的时候,如果遇到界面显示需要用文本,而获取选定项的值时需要用数字,我们就很习惯使用 DataSource  来进行绑定。

    例如以下代码:

     List<TextValue> tvList = new List<TextValue>();
     for (int i = 0; i < 4; i++)
    {
        tvList.Add(new TextValue(i.ToString(), i));
    }
     ComboBox cmb = new ComboBox();
    cmb.DataSource = tvList;
    cmb.DisplayMember = "Text";
    cmb.ValueMember = "Value";
    cmb.SelectedIndex = 0;

    但是这么做,在最后一行设置下拉列表框选定项的时候会出现异常,因为这样直接绑定后,下拉列表框的 Items 属性中的数据长度是 0。但是我们又必须设置选定项,这个时候我用了一下代码:

    ComboBox cmb = new ComboBox();
    for (int i = 0; i < 4; i++)
    {
        cmb.Items.Add(new TextValue(i.ToString(), i));
    }
    cmb.DisplayMember = "Text";
    cmb.ValueMember = "Value";
    cmb.SelectedIndex = 0;
    /// <summary>
    /// ComboBox的Item
    /// </summary>
    public class TextValue
    {
        public TextValue() { }
    
        public TextValue(string inText, int inValue)
        {
            this.Text = inText;
            this.Value = inValue;
        }
    
        private string _text;
        private int _value;
        /// <summary>
        /// 文本
        /// </summary>
        public string Text
        {
            set { this._text = value; }
            get { return this._text; }
        }
        /// <summary>
        ////// </summary>
        public int Value
        {
            set { this._value = value; }
            get { return this._value; }
        }
    }

    这么做既可以让下拉列表框做到显示和背后的值的分离,也可以立刻设置选定项。

  • 相关阅读:
    bcftools 为 vcf 文件建索引及合并 vcf 文件
    Linux 替换^M字符方法
    shell 字符串分割方法简介
    shell 数组介绍及相关操作
    Annovar 信息注释
    C++ string与数值的转换
    C/C++ 删除文件 remove函数
    关于内核转储(core dump)的设置方法
    mac下nginx安装
    linux独有的sendfile系统调用--“零拷贝,高效”
  • 原文地址:https://www.cnblogs.com/rogation/p/3435243.html
Copyright © 2011-2022 走看看