为ComboBox增加Value值

本文介绍了一种在 WinForm 的 ComboBox 控件中添加 Item 的 Value 值的方法,通过自定义类实现了类似 Web 中 DropDownList 的功能,并提供了详细的绑定示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在WinForm中不像Web中,ComboBox(WinForm)和DropDownList(Web)中和Item

 

不一样,WinForm中不可以直接添加Item的Value值,但是Web中可以。

 

现在这里写一个ComboBox大概可以实现添加Value值

 

class DropDownList:System.Windows.Forms.ComboBox
    {
        private bool _UseItemValue;

        [System.ComponentModel.Description("是否启用Value值,如果是请在绑定数据之后调用BindValue方法")]
        [System.ComponentModel.Category("数据")]
        [System.ComponentModel.Browsable(true)]
        [System.ComponentModel.DefaultValue(false)]
        public bool UseItemValue
        {
            get { return _UseItemValue; }
            set { _UseItemValue = value; }
        }

        /// <summary>
        /// 绑定Value值到Item里面去
        /// </summary>
        /// <param name="sep">分隔字符</param>
        public void BindValue(char sep)
        {
            #region 绑定Value值到Item里面去
            if (_UseItemValue)
            {
                List<KeyValuePair<string, object>> dit = new List<KeyValuePair<string, object>>();
                foreach (object obj in this.Items)
                {
                    string text = "";
                    if (obj is System.Data.DataRowView)
                    {
                        text = ((System.Data.DataRowView)obj).Row.ItemArray[0].ToString();
                    }
                    else
                    {
                        text = obj.ToString();
                    }
                    string[] value = text.Split(sep);
                    try
                    {
                        dit.Add(new KeyValuePair<string, object>(value[0], value[1]));
                    }
                    catch
                    {
                        dit.Add(new KeyValuePair<string, object>(text, ""));
                    }
                }
                this.DataSource = dit;
                this.DisplayMember = "Key";
                this.ValueMember = "Value";
            }           
            #endregion           
        }
    }

 

生成成功后,在属性“数据”中的UseItemValue的值设为true

 

并调用方法BindValue就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值