WinForm下ComboBox设定SelectedValue总结 (SelectedValue==null解决办法)[转]

WinForm下ComboBox设定SelectedValue总结 (SelectedValue==null解决办法)[转]实践发现 以 SelectedInde 赋值让 ComboBox 自动选中时能获得 SelectedValu 以 SelectedText 赋值让 ComboBox 自动选中时获得 SelectedValu 为空 即 this comboBox1 SelectedInde this comboBox1 FindString room 这样能获得 comboBox1 SelectedValu 值

实践发现:以SelectedIndex赋值让ComboBox自动选中时能获得SelectedValue;以SelectedText赋值让ComboBox自动选中时获得SelectedValue为空。

this.comboBox1.SelectedIndex = this.comboBox1.FindString(room);

这样能获得comboBox1.SelectedValue值。

this.comboBox1.SelectedText = room;

这样获得comboBox1.SelectedValue值为空。

 

下面为转帖内容:

最近在项目中处理一个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();
        }















 
完整代码:
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   {  private int _maxItems = 0 ;  public int MaxItems { get { return this._maxItems; } set { this._maxItems =  value; } } } } 

 

 

转载于:https://www.cnblogs.com/flying/archive/2013/05/23/3096050.html

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

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

(0)
上一篇 2026年3月16日 下午5:59
下一篇 2026年3月16日 下午6:00


相关推荐

  • 本土化Linux系统,科学网—linux本地化进行lefse分析 – 林国鹏的博文

    本土化Linux系统,科学网—linux本地化进行lefse分析 – 林国鹏的博文注:参考来自网络,如侵权则删。##对应于上述A-F6个模块,本地版的命令行操作示例如下#A,设置LEfSe的数据格式,详情format_input.py-h#-c,指定class的行(必须指定);-s,指定sub_class的行(可缺省);#-u,指定subject_id的行(可缺省);-o,设置归一化值,默认-1即不执行标准化#注:版本问题,有时format_in…

    2022年6月4日
    50
  • Spark executor显示Dead

    Spark executor显示DeadSpark 日志显示 ERRORexecuto CoarseGraine RECEIVEDSIGN 原因 Spark 开启了资源动态分配 当 executors 空闲达到设定时间后会被移除 spark dynamicAlloc enabled truespark dynamicAlloc executorIdl

    2026年3月16日
    2
  • Springboot整合RabbitMQ详细讲解

    Springboot整合RabbitMQ详细讲解搭建RabbitMQ环境Springboot整合RabbitMQ1、添加整合依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>2、配置application.yml提供者1)创建交换机和队列@Configurati

    2022年5月15日
    47
  • 软件测试之BUG的生命周期

    作为一名测试人员,重要的工作内容之一,就是找BUG,提交BUG,验证BUG,推进BUG的解决,直至软件达到发布的标准,提高软件的质量,及研发的工作效率和质量。要找BUG,那么,就要先了解一下BUG的定义是什么?BUG的定义:软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与…

    2022年4月5日
    81
  • 并发编程篇:java 高并发面试题

    并发编程篇:java 高并发面试题1、线程与进程进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textregion)、数据区域(dataregion)和堆栈(stackregion)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是…

    2022年5月6日
    43
  • AI大模型应用开发:从入门到精通的体系化学习路线 (2026版) | 高薪技能速成攻略!

    AI大模型应用开发:从入门到精通的体系化学习路线 (2026版) | 高薪技能速成攻略!

    2026年3月14日
    2

发表回复

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

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