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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 解决Discuz安装时报错“该函数需要 php.ini 中 allow_url_fopen 选项开启…”

    解决Discuz安装时报错“该函数需要 php.ini 中 allow_url_fopen 选项开启…”开启php的fsockopen函数——解决DZ论坛安装问题“该函数需要php.ini中allow_url_fopen选项开启。请联系空间商,确定开启了此项功能在安装dz论坛时遇到因为fsockopen()函数问题无法进入下一步,安装错误显示“该函数需要php.ini中allow_url_fopen选项开启。请联系空间商,确定开启了此项功能”,经过分析,总结了3个解决这个…

  • Vue开发手机端页面

    我的github记录册(PS:希望star):https://github.com/tonyzheng1…适配终端:讲解:http://www.w3cplus.com/mobile…源码:https://github.com/amfe/lib-f…代码规范https://github.com/pablohp…

  • route add怎么用_centos route add

    route add怎么用_centos route add1.具体功能 该命令用于在本地IP路由表中显示和修改条目。使用不带参数的ROUTE可以显示帮助。 2.语法详解 route[-f][-p][command[destination][masknetmask][gateway][metricmetric][ifinte***ce] 3.参数说明 -f 清除所有不是主路由(子网掩码为255.255.255.

  • spring boot 接口_什么是API接口

    spring boot 接口_什么是API接口引言前后端分离、APP交互等,大多都是通过API接口实现的。既然要进行数据交互,那么这接口就得有讲究了:既要实用,又要优雅好看!那么,如何写一套(个)漂亮的API接口呢?一、返回格式API接口要求返回的格式是text/json,我们知道网页返回的格式一般是text/html,因此,SpringBoot为写接口,提供了两种实现方式:类注解和方法注解。类注解@Re…

  • linux添加路由提示不允许的操作_Linux修改默认路由

    linux添加路由提示不允许的操作_Linux修改默认路由1、linux添加路由、查看路由状态、删除路由如下添加路由:routeadd-net192.168.1.44netmask255.255.255.0gw192.168.1.1查看路由状态:route-n删除路由:routedel-net192.168.20.0netmask255.255.255.02、如果想让重启也生效,可以把添加路由命令写在/etc/rc.local中,即可vi/etc/rc.local在最后加下如下routeadd-net192.1

  • java分前端后端吗_Java Web属于前端还是后端

    java分前端后端吗_Java Web属于前端还是后端JavaWeb属于前端还是后端发布时间:2020-06-1513:39:15来源:亿速云阅读:325作者:鸽子JavaWeb是前端还是后端?JavaWeb是属于后端,JavaWeb就是用Java技术开发的Web应用,而Java是一种可以编写跨平台应用软件、完全面向对象的高级程序设计语言,一般常用于后端服务器的开发和Android软件的开发。Java语言特点1、简单性Java看起来设计…

发表回复

您的电子邮箱地址不会被公开。

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