WinForm下ComboBox设定SelectedValue总结

WinForm下ComboBox设定SelectedValue总结WinForm下ComboBox设定SelectedValue总结

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

最近在项目中处理一个winForm中设定ComboBox值,奇怪的是用一个对象匹配ComboBox的Datasource集合的一个对象时,设置SelectedValue时,竟然得到SelectedValue为null。

网上搜索一下,有说是如果用DateSet绑定时,SelectedValue得到的是null或DataRowView。

后来反复实践,发现可以用以下方法实现:

[c-sharp]
view plain
copy
print
?

  1. private void SetValueByItem()  
  2.         {  
  3.             Area a = new Area();  
  4.             a.Area_ID = “8”;  
  5.             a.Area_Name = “第8名”;  
  6.             cbList.SelectedItem = ac.FindAll(delegate(Area ar) { return ar.Area_ID == a.Area_ID; })[0];  
  7.             lbResult.Text = cbList.SelectedItem.GetType().ToString() + “:” + cbList.SelectedValue.ToString();  
  8.         }  

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();        }

其他两种设置方式:

[c-sharp]
view plain
copy
print
?

  1. private void SetValueByValue()  
  2.        {  
  3.            Area a = new Area();  
  4.            a.Area_ID = “8”;  
  5.            a.Area_Name = “第8名”;  
  6.            cbList.SelectedValue = a.Area_ID;  
  7.            lbResult.Text = cbList.SelectedValue.GetType().ToString() + “:” + cbList.SelectedValue.ToString();  
  8.        }  

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();        }

[c-sharp]
view plain
copy
print
?

  1. private void SetValueByText()  
  2.         {  
  3.             Area a = new Area();  
  4.             a.Area_ID = “8”;  
  5.             a.Area_Name = “第8名”;  
  6.             cbList.SelectedIndex = cbList.FindString(a.Area_Name);  
  7.             lbResult.Text = cbList.SelectedValue.GetType().ToString() + “:” + cbList.SelectedValue.ToString();  
  8.         }  

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();        }

完整代码:

[c-sharp]
view plain
copy
print
?

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8. namespace WinFormCombobox  
  9. {  
  10.     public partial class frmMain : Form  
  11.     {  
  12.         public frmMain()  
  13.         {  
  14.             InitializeComponent();  
  15.         }  
  16.         #region Members  
  17.         AreaLists ac;  
  18.         public AreaLists GetTestArea()  
  19.         {  
  20.             AreaLists al = new AreaLists();  
  21.             for (int i = 1; i < 11; i++)  
  22.             {  
  23.                 Area a = new Area();  
  24.                 a.Area_ID = i.ToString();  
  25.                 a.Area_Name = “第” + i.ToString() + “名”;  
  26.                 al.Add(a);  
  27.             }  
  28.             return al;  
  29.         }  
  30.         #endregion  
  31.         #region Events  
  32.         private void frmMain_Load(object sender, EventArgs e)  
  33.         {  
  34.             ac = GetTestArea();  
  35.             cbList.DataSource = ac;  
  36.             cbList.DisplayMember = “Area_Name”;  
  37.             cbList.ValueMember = “Area_ID”;  
  38.         }  
  39.         private void btnSetCombobox_Click(object sender, EventArgs e)  
  40.         {  
  41.             SetValue0();  
  42.             //SetValueByValue();  
  43.             SetValueByItem();  
  44.             SetValueByText();  
  45.         }  
  46.         #endregion  
  47.         #region Methods  
  48.         private void SetValue0()  
  49.         {  
  50.             Area a = new Area();  
  51.             a.Area_ID = “8”;  
  52.             a.Area_Name = “第8名”;  
  53.             cbList.DataSource = GetTestArea();  
  54.             cbList.DisplayMember = “Area_Name”;  
  55.             cbList.ValueMember = “Area_ID”;  
  56.             cbList.SelectedValue = a.Area_ID;  
  57.             lbResult.Text = cbList.SelectedValue.ToString();  
  58.         }  
  59.         private void SetValueByValue()  
  60.         {  
  61.             Area a = new Area();  
  62.             a.Area_ID = “8”;  
  63.             a.Area_Name = “第8名”;  
  64.             cbList.SelectedValue = a.Area_ID;  
  65.             lbResult.Text = cbList.SelectedValue.GetType().ToString() + “:” + cbList.SelectedValue.ToString();  
  66.         }  
  67.         private void SetValueByItem()  
  68.         {  
  69.             Area a = new Area();  
  70.             a.Area_ID = “8”;  
  71.             a.Area_Name = “第8名”;  
  72.             cbList.SelectedItem = ac.FindAll(delegate(Area ar) { return ar.Area_ID == a.Area_ID; })[0];  
  73.             lbResult.Text = cbList.SelectedItem.GetType().ToString() + “:” + cbList.SelectedValue.ToString();  
  74.         }  
  75.         private void SetValueByText()  
  76.         {  
  77.             Area a = new Area();  
  78.             a.Area_ID = “8”;  
  79.             a.Area_Name = “第8名”;  
  80.             cbList.SelectedIndex = cbList.FindString(a.Area_Name);  
  81.             lbResult.Text = cbList.SelectedValue.GetType().ToString() + “:” + cbList.SelectedValue.ToString();  
  82.         }  
  83.         #endregion  
  84.     }  
  85. }  
  86.   
  87. using System;  
  88. using System.Collections.Generic;  
  89. using System.Text;  
  90. namespace WinFormCombobox  
  91. {  
  92.     #region Area  
  93.     public class Area  
  94.     {  
  95.         private string m_Area_ID;  
  96.         public string Area_ID  
  97.         {  
  98.             get { return m_Area_ID; }  
  99.             set { m_Area_ID = value; }  
  100.         }  
  101.         private string m_Area_Name;  
  102.         public string Area_Name  
  103.         {  
  104.             get { return m_Area_Name; }  
  105.             set { m_Area_Name = value; }  
  106.         }  
  107.         private double m_Area_Order;  
  108.         public double Area_Order  
  109.         {  
  110.             get { return m_Area_Order; }  
  111.             set { m_Area_Order = value; }  
  112.         }  
  113.     }  
  114.     #endregion  
  115.     [Serializable]  
  116.     public class AreaLists : List<Area>  
  117.     {  
  118.         private int _maxItems = 0;  
  119.         public int MaxItems { get { return this._maxItems; } set { this._maxItems = value; } }  
  120.     }  
  121. }  

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

 

 

 

 

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207128.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 应对缓存击穿的解决方法

    应对缓存击穿的解决方法一 什么样的数据适合缓存 分析一个数据是否适合缓存 我们要从访问频率 读写比例 数据一致性等要求去分析 二 什么是缓存击穿在高并发下 多线程同时查询同一个资源 如果缓存中没有这个资源 那么这些线程都会去数据库查找 对数据库造成极大压力 缓存失去存在的意义 打个比方 数据库是人 缓存是防弹衣 子弹是线程 本来防弹衣是防止子弹打到人身上的 但是当防弹衣里面没有防弹的物质时 子弹就

    2025年10月13日
    3
  • C#中如何为参数SqlDbType.Decimal指定精度与小数位数

    C#中如何为参数SqlDbType.Decimal指定精度与小数位数 在.net中操作数据库的时候,我们更多的是推荐使用参数化来传值,但这其中就会产生一些疑惑,比如使用Decimal时如何保持与数据库中一样的精度与小数位数呢? 利用参数的Precision与Scale的属性即可,示例如下: ///&lt;summary&gt; ///更新一条数据 ///&lt;/summary&gt; publicDictionaryEntryUpdate…

    2022年7月20日
    16
  • 视觉里程计 matlab实现,视觉里程计

    视觉里程计 matlab实现,视觉里程计【实例简介】视觉里程计(visualodometry)【实例截图】【核心代码】libviso2├──CMakeLists.txt├──img│├──I1_000000.png│├──I1_000001.png│├──I1_000002.png│├──I1_000003.png│├──I1_000004.png│├──I1_000005.png│…

    2022年6月24日
    32
  • Django接口_小米电视spdif接口

    Django接口_小米电视spdif接口前言在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请求API,系统返回数据。但是难免在系统发展的过程中,不可避免的需要添加新的资源,或者修改现有资源。因此,改动升

    2022年7月30日
    10
  • webstorm好用的插件_谷歌浏览器插件推荐

    webstorm好用的插件_谷歌浏览器插件推荐安装插件codeglance可以实现VSCode的右侧小地图

    2025年10月10日
    2
  • 天翼1号 2021 5G全网通云手机_2021年再买5g手机

    天翼1号 2021 5G全网通云手机_2021年再买5g手机2021年天翼智能生态博览会期间,展锐基于中国电信的5GSA网络,在天翼1号2021手机上完成了5G网络切片端到端业务验证,成功验证了云监控、云桌面、云手机、天翼超高清、小翼管家、云游戏等业务,这标志着天翼1号2021已具备网络切片能力。演示采用的切片目标方案由展锐和中国电信研究院联合研发,方案基于展锐调制解调器中心化(Modem-Centric)架构设计,中国电信研究院研发了终端切片中间件SDK,天翼1号终端适配开发,成功实现了应用程序未作任何修改的前提下顺利接入5G切片网络。本次业务验证意味着应用

    2022年9月1日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号