最近在项目中处理一个winForm中设定ComboBox值,奇怪的是用一个对象匹配ComboBox的Datasource集合的一个对象时,设置SelectedValue时,竟然得到SelectedValue为null。
网上搜索一下,有说是如果用DateSet绑定时,SelectedValue得到的是null或DataRowView。
后来反复实践,发现可以用以下方法实现:
private void SetValueByItem() { Area a = new Area(); a.Area_ID = "8"; a.Area_Name = "第8名"; cbList.SelectedItem = ac.FindAll(delegate(Area ar) { return ar.Area_ID == a.Area_ID; })[0]; lbResult.Text = cbList.SelectedItem.GetType().ToString() + ":" + cbList.SelectedValue.ToString(); }
其他两种设置方式:
private void SetValueByValue() { Area a = new Area(); a.Area_ID = "8"; a.Area_Name = "第8名"; cbList.SelectedValue = a.Area_ID; lbResult.Text = cbList.SelectedValue.GetType().ToString() + ":" + cbList.SelectedValue.ToString(); }
private void SetValueByText() { Area a = new Area(); a.Area_ID = "8"; a.Area_Name = "第8名"; cbList.SelectedIndex = cbList.FindString(a.Area_Name); lbResult.Text = cbList.SelectedValue.GetType().ToString() + ":" + cbList.SelectedValue.ToString(); }
完整代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WinFormCombobox { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } #region Members AreaLists ac; public AreaLists GetTestArea() { AreaLists al = new AreaLists(); for (int i = 1; i < 11; i++) { Area a = new Area(); a.Area_ID = i.ToString(); a.Area_Name = "第" + i.ToString() + "名"; al.Add(a); } return al; } #endregion #region Events private void frmMain_Load(object sender, EventArgs e) { ac = GetTestArea(); cbList.DataSource = ac; cbList.DisplayMember = "Area_Name"; cbList.ValueMember = "Area_ID"; } private void btnSetCombobox_Click(object sender, EventArgs e) { ////SetValue0(); //SetValueByValue(); ////SetValueByItem(); SetValueByText(); } #endregion #region Methods private void SetValue0() { Area a = new Area(); a.Area_ID = "8"; a.Area_Name = "第8名"; cbList.DataSource = GetTestArea(); cbList.DisplayMember = "Area_Name"; cbList.ValueMember = "Area_ID"; cbList.SelectedValue = a.Area_ID; lbResult.Text = cbList.SelectedValue.ToString(); } private void SetValueByValue() { Area a = new Area(); a.Area_ID = "8"; a.Area_Name = "第8名"; cbList.SelectedValue = a.Area_ID; lbResult.Text = cbList.SelectedValue.GetType().ToString() + ":" + cbList.SelectedValue.ToString(); } private void SetValueByItem() { Area a = new Area(); a.Area_ID = "8"; a.Area_Name = "第8名"; cbList.SelectedItem = ac.FindAll(delegate(Area ar) { return ar.Area_ID == a.Area_ID; })[0]; lbResult.Text = cbList.SelectedItem.GetType().ToString() + ":" + cbList.SelectedValue.ToString(); } private void SetValueByText() { Area a = new Area(); a.Area_ID = "8"; a.Area_Name = "第8名"; cbList.SelectedIndex = cbList.FindString(a.Area_Name); lbResult.Text = cbList.SelectedValue.GetType().ToString() + ":" + cbList.SelectedValue.ToString(); } #endregion } } using System; using System.Collections.Generic; using System.Text; namespace WinFormCombobox { #region Area public class Area { private string m_Area_ID; public string Area_ID { get { return m_Area_ID; } set { m_Area_ID = value; } } private string m_Area_Name; public string Area_Name { get { return m_Area_Name; } set { m_Area_Name = value; } } private double m_Area_Order; public double Area_Order { get { return m_Area_Order; } set { m_Area_Order = value; } } } #endregion [Serializable] public class AreaLists : List<Area> { private int _maxItems = 0; public int MaxItems { get { return this._maxItems; } set { this._maxItems = value; } } } }
邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。 助人等于自助! 3w@live.cn
您还没有登录,请您登录后再发表评论
C#的winform中对combobox和listbox控件SelectedValue属性重写,使得在没有绑定数据源情况下可以使用SelectedValue获取当前选中项的value值。源码下载。
现有的combobox只有单选功能,通过重画combobox构造多选combobox;
主要介绍了WinForm中comboBox控件数据绑定实现方法,结合实例形式分析了WinForm实现comboBox控件数据绑定的常用方法与相关操作技巧,需要的朋友可以参考下
winform combobox 模糊查询
winform中关于combobox控件使用详解
在WinForm界面上,采用自定义ComboBox控件实现在下拉框中显示颜色列表。本程序在VS2008下编译通过。
Form2窗体演示了ComboBox从数据库获取数据源的用法,以及Text、SelectedText、SelectedValue和SelectedItem的区别。 n年前写的一个非常简单的小例子。开发环境为vs2008,有一个页面连了一下SQL SERVER的pubs数据库
C# WinForm 中ComboBox数据绑定
C#WinForm的ComboBox控件自定义实现自动模糊匹配查找数据的方法 与控件自带的AutoCompleteMode类似,完美实现模糊匹配,解决AutoCompleteMode只能从左向右匹配的问题
C# winform 美化下拉框 美化ComboBox 详情请看我的文章截图 : https://blog.csdn.net/m0_65636467/article/details/132711246?spm=1001.2014.3001.5502
开发语言C#。.net开发环境。对C#WinForm控件展系列之ComboBox组合框控件。对学习控件扩展很有用
C# ComboBox(winform 2008) 下拉多列 支持按输入的自动过滤(比如输入A,则以A开头的项全匹配出来),当只有一条满足条件时自动选中。
按输入的字符自动查找并选择符合的项,下拉框的信息自动下拉提示
本方法和用checkbox, listbox等控件和事件拼凑出来的不同,本方法是一个集成的独立控件,基本实现了控件的顺滑度,下拉框可悬浮等效果,可以认为是comboBox的升级版,使用方便,仅需引用编译好的DLL,直接在toolBox...
Web控件DropDownList和WinForm控件ComboBox机制不一样。 ComboBox没有对应的ListItem需要自己写一个: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
Winform中的ComBox控件实现换行 当文本长度达到最大时实现换行
继承自C# Winform中ComboBox的下拉多选控件,操作简单,效果非常好 1、多选。 2、可绑定List,DataTable,Dictionary类型的数据源。 3、在下拉列表中可显示自定义的多列数据。 4、可在下拉列表中通过输入关键字,...
相关推荐
C#的winform中对combobox和listbox控件SelectedValue属性重写,使得在没有绑定数据源情况下可以使用SelectedValue获取当前选中项的value值。源码下载。
现有的combobox只有单选功能,通过重画combobox构造多选combobox;
主要介绍了WinForm中comboBox控件数据绑定实现方法,结合实例形式分析了WinForm实现comboBox控件数据绑定的常用方法与相关操作技巧,需要的朋友可以参考下
winform combobox 模糊查询
winform中关于combobox控件使用详解
在WinForm界面上,采用自定义ComboBox控件实现在下拉框中显示颜色列表。本程序在VS2008下编译通过。
winform中关于combobox控件使用详解
Form2窗体演示了ComboBox从数据库获取数据源的用法,以及Text、SelectedText、SelectedValue和SelectedItem的区别。 n年前写的一个非常简单的小例子。开发环境为vs2008,有一个页面连了一下SQL SERVER的pubs数据库
C# WinForm 中ComboBox数据绑定
C#WinForm的ComboBox控件自定义实现自动模糊匹配查找数据的方法 与控件自带的AutoCompleteMode类似,完美实现模糊匹配,解决AutoCompleteMode只能从左向右匹配的问题
winform中关于combobox控件使用详解
C# winform 美化下拉框 美化ComboBox 详情请看我的文章截图 : https://blog.csdn.net/m0_65636467/article/details/132711246?spm=1001.2014.3001.5502
开发语言C#。.net开发环境。对C#WinForm控件展系列之ComboBox组合框控件。对学习控件扩展很有用
C# ComboBox(winform 2008) 下拉多列 支持按输入的自动过滤(比如输入A,则以A开头的项全匹配出来),当只有一条满足条件时自动选中。
按输入的字符自动查找并选择符合的项,下拉框的信息自动下拉提示
本方法和用checkbox, listbox等控件和事件拼凑出来的不同,本方法是一个集成的独立控件,基本实现了控件的顺滑度,下拉框可悬浮等效果,可以认为是comboBox的升级版,使用方便,仅需引用编译好的DLL,直接在toolBox...
Web控件DropDownList和WinForm控件ComboBox机制不一样。 ComboBox没有对应的ListItem需要自己写一个: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
Winform中的ComBox控件实现换行 当文本长度达到最大时实现换行
继承自C# Winform中ComboBox的下拉多选控件,操作简单,效果非常好 1、多选。 2、可绑定List,DataTable,Dictionary类型的数据源。 3、在下拉列表中可显示自定义的多列数据。 4、可在下拉列表中通过输入关键字,...