c#(winform)中ComboBox添加Key/Value项、获取选中项、根据Key

WinForm下的ComboBox默认是以多行文本来设定显示列表的, 这通常不符合大家日常的应用,

因为大家日常应用通常是键/值对的形式去绑定它的.

参考了一些网上的例子,最终写了一个辅助类用于方便对ComboBox的操作:

用下面这个类的实例作为ComboBox的添加项:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace tp7309.Winform
{
    public class ListItem
    {
        public string Key { get; set; }
        public string Value { get; set; }

        public ListItem(string strKey, string strValue)
        {
            this.Key = strKey;
            this.Value = strValue;
        }
        public override string ToString()
        {
            return this.Key;
        }

        /// <summary>
        /// 根据ListItem中的Value找到特定的ListItem(仅在ComboBox的Item都为ListItem时有效)
        /// </summary>
        /// <param name="cmb">要查找的ComboBox</param>
        /// <param name="strValue">要查找ListItem的Value</param>
        /// <returns>返回传入的ComboBox中符合条件的第一个ListItem,如果没有找到则返回null.</returns>
        public static ListItem FindByValue(ComboBox cmb, string strValue)
        {
            foreach (ListItem li in cmb.Items)
            {
                if (li.Value == strValue)
                {
                    return li;
                }
            }
            return null;
        }

        /// <summary>
        /// 根据ListItem中的Key找到特定的ListItem(仅在ComboBox的Item都为ListItem时有效)
        /// </summary>
        /// <param name="cmb">要查找的ComboBox</param>
        /// <param name="strValue">要查找ListItem的Key</param>
        /// <returns>返回传入的ComboBox中符合条件的第一个ListItem,如果没有找到则返回null.</returns>
        public static ListItem FindByText(ComboBox cmb, string strText)
        {
            foreach (ListItem li in cmb.Items)
            {
                if (li.Value == strText)
                {
                    return li;
                }
            }
            return null;
        }
    }
}

使用前引入命名空间:tp7309.Winform

  添加项:  

cmb1.Items.Add(new ListItem("key1", "value1"));
cmb1.Items.Add(new ListItem("key2", "value2"));

获取选中项:

ListItem li = (ListItem)cmb1.SelectedItem;
ListItem li1 = ListItem.FindByValue(cmb1, "value1");   //根据Key得到选中项
ListItem li2 = ListItem.FindByText(cmb1, "key1");      //根据Value得到选中项
string strKey = li.Key;   //得到选中项Key
string strValue = li.Value;   //得到选中项Value

设置选中项:

cmb1.SelectedIndex = 0;    //根据索引修改选中项
cmb1.SelectedItem = ListItem.FindByValue(cmb1, "value1");   //根据Key得到选中项
cmb1.SelectedItem = ListItem.FindByText(cmb1, "key1");      //根据Value得到选中项

c#(winform)中ComboBox添加Key/Value项、获取选中项、根据Key

时间: 2024-10-08 20:50:24

c#(winform)中ComboBox添加Key/Value项、获取选中项、根据Key的相关文章

winform中DataGridView添加ComboBox的最终解决方案(点击ComboBox默认显示当前行的内容)

第一: 数据绑定ComBoBox控件 先在窗体设计时拖一个ComBoBox控件,然后在里面的ITEMS设好你要下拉项,或者从数据库中的表绑定,这个估计都会. 第二: // 将下拉列表框加入到DataGridView控件中,这句放在绑定DataGridView之后写. 在窗体的Load方法中加入:g_DataGridView.Controls.Add(g_ComBoBox);也就是把ComBoBox控件添加到DataGridView控件中第三: 在DataGridView控件的CurrentCel

winform中comboBox控件加默认选项的问题

winform程序设计中,label,TextBox,ComboBox等几个控件几乎是用得最多的,在设计中经常会遇到一些小问题,如:comboBox控件绑定了数据源之后,如何设置默认值? combobox绑定数据源之后是这样的北京             <----默认显示的就是这条上海深圳....想要让它显示成这样请选择城市     <--------要想默认显示这条北京上海深圳 .... 尝试做法: 1.修改了DropDownStyle属性也不起作用. 2.消去数据源直接用  combob

WinForm 中 comboBox控件之数据绑定

下面介绍三种对comboBox绑定的方式,分别是泛型中List和Dictionary,还有数据集DataTable  一.List 现在我们直接创建一个List集合,然后绑定 1 List<string> liStr = new List<string>(); 2 liStr.Add("1"); 3 liStr.Add("2"); 4 liStr.Add("3"); 5 cboBindValue.DataSource =

WinForm 中ComboBox 绑定总结

http://www.cnblogs.com/blsong/archive/2010/04/13/1710955.html 1. DataTable用DataTable直接绑定,只需 要设置DataSource.DisplayMember.ValueMember三个属性即可. this.cmbConsumeSuperMarket.DataSource = dtSuperMarket;this.cmbConsumeSuperMarket.DisplayMember = "Name"; t

winform中ComboBox利用AutoComplete属性实现模糊查询(有缺陷)

上一篇文章是用ComboBox里面的原生事件实现模糊查询,操作比较灵活一些,但是收到评论说,利用AutoComplete属性就可以实现模糊查询,但是据本人所了解,AutoComplete虽然能够方便的实现模糊查询,但是有一定的缺陷,就是,模糊查询只能从左往右. 上一篇连接地址:http://www.cnblogs.com/xilipu31/p/3993049.html 下面是简单的实现方式: 前台:一个简单的form窗体+ComboBox控件 后台:申明List<string> listOni

winform中textbox属性Multiline=true时全选

1.文本框右键属性 => 添加KeyDown事件. 2.添加如下代码: private void txt_result_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.KeyCode == Keys.A) { ((TextBox)sender).SelectAll(); } }

WinForm中调用WPF控件

WinForm中调用WPF控件 在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件: 步骤1:创建WinForm工程: 步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建或者添加现有的WPF用户控件工程: 步骤3:在WPF中创建自定义的控件,或者添加WPF控件到面板上: 步骤4:在WinForm面板上添加ElementHost控件(工具箱中): 步骤5:生成解决方案: 步骤6:在刚刚的ElementHost中的Child属性中添加刚刚

c#(winform)中自定义ListItem类方便ComboBox添加Item项

1.定义ListItem类 public class ListItem { private string _key = string.Empty; private string _value = string.Empty; public ListItem(string pKey, string pValue) { _key = pKey; _value = pValue; } public override string ToString() { return this._value; } pu

Winform中DataGridView网格添加ComBoBox

在工作中遇到需要在DataGridView网格中添加ComBoBox的需求.解决后记录 1 在窗体类中声明一个全局的变量ComBoBox,并在Form的Load事件中设置号ComBoBox的下拉选项 2 在DataGridView绑定完数据源之后,将ComBoBox添加到DataGridView中 3 编写DataGridView的CurrentCellChanged事件和ComBoBox的SelectedIndexChanged事件 完整代码如下: public partial class F