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

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

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

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

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

[c-sharp] view plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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. using System;
  87. using System.Collections.Generic;
  88. using System.Text;
  89. namespace WinFormCombobox
  90. {
  91. #region Area
  92. public class Area
  93. {
  94. private string m_Area_ID;
  95. public string Area_ID
  96. {
  97. get { return m_Area_ID; }
  98. set { m_Area_ID = value; }
  99. }
  100. private string m_Area_Name;
  101. public string Area_Name
  102. {
  103. get { return m_Area_Name; }
  104. set { m_Area_Name = value; }
  105. }
  106. private double m_Area_Order;
  107. public double Area_Order
  108. {
  109. get { return m_Area_Order; }
  110. set { m_Area_Order = value; }
  111. }
  112. }
  113. #endregion
  114. [Serializable]
  115. public class AreaLists : List<Area>
  116. {
  117. private int _maxItems = 0;
  118. public int MaxItems { get { return this._maxItems; } set { this._maxItems = value; } }
  119. }
  120. }

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

WinForm下ComboBox设定SelectedValue总结相关推荐

  1. WinForm下ComboBox获取绑定对象集的SelectedValue补充

    在上文<WinForm下ComboBox设定SelectedValue总结>中,我列举了出现不能正常获取SlectedValue的一些方法.原文写得比较乱,引起读者的理解分歧,在此表示歉意 ...

  2. winform的combobox的selectedValue使用问题

    combobox.Items.Add(new { text = XXX, value = XXX }); 用上面的代码直接在combobox中添加数据时,使用selectedValue取出的值为空,后 ...

  3. WinForm中Combobox绑定值问题

    好久没写过WinForm程序了,昨天闲来无事就试着写个玩玩.界面中有两个combobox控件,第二个combobox控件中绑定值是根据第一个combobox值而定的.当时自己写的代码是: 1 priv ...

  4. c#(winform)中ComboBox和ListBox添加项完全解决

    c#(winform)中ComboBox和ListBox添加项完全解决 c#(winform)中ComboBox和ListBox添加项完全解决 刚开始用.net 的winform开发,发现好些控件都很 ...

  5. Winform下的地图开发控件(GMap.NET)使用心得之二

    在上篇<Winform下的地图开发控件(GMap.NET)使用心得>中简单介绍了GMap.NET的控件基本情况,本篇开始介绍一下相关的代码操作. 其实目前GMap.NET提供的功能还不是很 ...

  6. 分享在winform下实现左右布局多窗口界面

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,我这里就分享一个:在winform下实现左右布局多窗口 ...

  7. java messagebox 关闭_wince/WinForm下实现一个自动关闭的MessageBox

    WinForm 下我们可以调用MessageBox.Show 来显示一个消息对话框,提示用户确认等操作.在有些应用中我们需要通过程序来自动关闭这个消息对话框而不是由用户点击确认按钮来关闭.然而.Net ...

  8. linux系统修改bond的ip,Linux下快速设定ip bond,linux设定ipbond

    Linux下快速设定ip bond,linux设定ipbond 在计算机网路普及的初期,很多OS系统都使用的为单网卡方式,即一个网卡使用一个IP地址.随着网络要求的不断提高,我们可以对多个网卡进行绑定 ...

  9. winform下的未捕捉的异常处理

    winform下可以有两种方式来处理未捕捉的异常: 1.通过挂接Application.ThreadException 事件来处理未捕捉的异常. 2.通过挂接AppDomain.UnhandledEx ...

最新文章

  1. 利用SMTP收发邮件
  2. 蓝桥杯_算法训练_字串统计
  3. html表格极细边框,html中表格细边框的四种实现及其比较
  4. spyder编辑器报ModuleNotFoundError: No module named ‘pymongo‘,明明已经安装上了pymongo扩展
  5. SpringMVC之@requestBody的作用
  6. URLEncode编码和URLDecode解码
  7. Django first lesson 环境搭建
  8. Android Studio 查看页面布局层次结构
  9. 以太网峰会:网络管理员已成濒危职业
  10. Android MuPDF 阅读PDF文件
  11. 《Linux编程》学习笔记 ·004【文件I/O操作】
  12. Ubuntu18.04截屏编辑工具flameshot
  13. 玩玩直播,搭建一个流媒体服务器
  14. Dsoframer注册方法
  15. 机器人编程按时巡线_活动回顾 丨巡线机器人编程活动带小朋友体验游戏设计的乐趣...
  16. css td中画斜线,css 模拟表格斜线
  17. python模拟支付宝扫码登录_Python爬虫模拟登录支付宝并获取订单信息
  18. usb2.0 to sata 芯片_达摩院发布业界首款语音合成算法专用AI FPGA芯片设计Ouroboros,效率提高百倍...
  19. Python format 格式化输入字符对不齐解决
  20. 机器学习系列4 使用Python创建Scikit-Learn回归模型

热门文章

  1. eclipse中常见的红叉叉
  2. 山科java实验3-2 在安排教师监考时,需要从一组教师中随机选取n个教师参加监考。要求实现一个类RandomTeacher的静态方法public static String[] getRandomT
  3. 六级考研单词之路-七
  4. Vmware中的虚拟网络 ( by quqi99 )
  5. 背包九讲 (蒟蒻版)之01背包
  6. RK3288 android7.1.2 i2c 出现timeout 超时错误分析
  7. 什么?那个拒绝996的新同事,居然升职了?!
  8. 域环境下通过域策略推送图片(幻灯片)类型的屏保
  9. 网络ping不通是什么原因?那是因为你没掌握这些!
  10. MFC RadioButton