WinForm下ComboBox设定SelectedValue总结

发布时间:2025-12-09 13:39:42 浏览次数:4

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

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

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

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

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

[c-sharp]
view plain
copy
print
?

  1. privatevoidSetValueByItem()
  2. {
  3. Areaa=newArea();
  4. a.Area_ID=“8”;
  5. a.Area_Name=“第8名”;
  6. cbList.SelectedItem=ac.FindAll(delegate(Areaar){returnar.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. privatevoidSetValueByValue()
  2. {
  3. Areaa=newArea();
  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. privatevoidSetValueByText()
  2. {
  3. Areaa=newArea();
  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. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Drawing;
  6. usingSystem.Text;
  7. usingSystem.Windows.Forms;
  8. namespaceWinFormCombobox
  9. {
  10. publicpartialclassfrmMain:Form
  11. {
  12. publicfrmMain()
  13. {
  14. InitializeComponent();
  15. }
  16. #regionMembers
  17. AreaListsac;
  18. publicAreaListsGetTestArea()
  19. {
  20. AreaListsal=newAreaLists();
  21. for(inti=1;i<11;i++)
  22. {
  23. Areaa=newArea();
  24. a.Area_ID=i.ToString();
  25. a.Area_Name=“第”+i.ToString()+“名”;
  26. al.Add(a);
  27. }
  28. returnal;
  29. }
  30. #endregion
  31. #regionEvents
  32. privatevoidfrmMain_Load(objectsender,EventArgse)
  33. {
  34. ac=GetTestArea();
  35. cbList.DataSource=ac;
  36. cbList.DisplayMember=“Area_Name”;
  37. cbList.ValueMember=“Area_ID”;
  38. }
  39. privatevoidbtnSetCombobox_Click(objectsender,EventArgse)
  40. {
  41. SetValue0();
  42. //SetValueByValue();
  43. SetValueByItem();
  44. SetValueByText();
  45. }
  46. #endregion
  47. #regionMethods
  48. privatevoidSetValue0()
  49. {
  50. Areaa=newArea();
  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. privatevoidSetValueByValue()
  60. {
  61. Areaa=newArea();
  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. privatevoidSetValueByItem()
  68. {
  69. Areaa=newArea();
  70. a.Area_ID=“8”;
  71. a.Area_Name=“第8名”;
  72. cbList.SelectedItem=ac.FindAll(delegate(Areaar){returnar.Area_ID==a.Area_ID;})[0];
  73. lbResult.Text=cbList.SelectedItem.GetType().ToString()+“:”+cbList.SelectedValue.ToString();
  74. }
  75. privatevoidSetValueByText()
  76. {
  77. Areaa=newArea();
  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. usingSystem;
  87. usingSystem.Collections.Generic;
  88. usingSystem.Text;
  89. namespaceWinFormCombobox
  90. {
  91. #regionArea
  92. publicclassArea
  93. {
  94. privatestringm_Area_ID;
  95. publicstringArea_ID
  96. {
  97. get{returnm_Area_ID;}
  98. set{m_Area_ID=value;}
  99. }
  100. privatestringm_Area_Name;
  101. publicstringArea_Name
  102. {
  103. get{returnm_Area_Name;}
  104. set{m_Area_Name=value;}
  105. }
  106. privatedoublem_Area_Order;
  107. publicdoubleArea_Order
  108. {
  109. get{returnm_Area_Order;}
  110. set{m_Area_Order=value;}
  111. }
  112. }
  113. #endregion
  114. [Serializable]
  115. publicclassAreaLists:List<Area>
  116. {
  117. privateint_maxItems=0;
  118. publicintMaxItems{get{returnthis._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

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477