DisplayMember绑定需要显示的数据表字段,

而ValueMember绑定需要获取选择的项的值。

然后通过

combo.SelectedValue就可以取得选中项的值了。

DisplayMember会显示在你的下拉框中,ValueMember的值和下拉框显示的值一一对应,并不在下拉框显示的。

所对应的值就是一条记录里面 有标识列ID(唯一) 有显示的列(如名称,可重复)
ValueMember 可以成为名称,也可成为ID
但是一般来说都只绑定ID 这样好处理,也很方便识别,
DisplayMember 是绑定显示的数据 如:北京
一般DisplayMember是显示给客户看的
 而ValueMember 是绑定处理程序标识 给程序员看的。

------------------------------------------------------------------------------------------

比如数据库一个字段 性别

用 0或者 1存储

combobox中DisplayMember显示为男或者女,ValueMember绑定的对应数据库的字段

当你保存时,要存到数据库0或者1,这时候直接获取选中的valuemenber时存储就可以了

---------------------------------------------------------------------------------------------------------------------------------

一般做法:

首先需要指定 combox.DataSource,
然后用表DataSource的字段名设置combox 的 ValueMember和DisplayMember ,
那么当你选择combox 的一个item时,你直接可见的是此item的 DisplayMember 对应内容,
而此 item的值是ValueMember 的对应内容。

 

关于.net winform ComboBoxDataSourceDisplayMemberValueMember属性的
设置顺序的问题。《参考博客》

ComboBox的DataSource属性为object类型,但是需要实现IListSource接口的类型。

当把DataTable赋值给该属性后,如果此时没有指定ComboBox的DisplayMember和ValueMember属性的话,

这时获得的ComboBox的SelectValue属性将是System.Data.DataRowView的一个实例。

据此推测DataTable中实现的IListSource接口中的GetList()方法应该返回的是DataTable的

DefaultView,也就是DataView的一个实例是DataRowView的集合。而因为没有指定DisplayMember和ValueMember

属性,所以ComboBox直接把DataView中的每一个DataRowView实例填充到列表中。

这样的话就可能在ComboBox的SelectedIndexChanged事件处理中产生错误。

为了避免这个问题应该先设置DisplayMember和ValueMember属性,然后再设置DataSource属性。

避免先设置DataSource属性。

例如:

        public static void SetShopComboSpecial(ComboBox combo){DataTable dt = CommonService.GetShopSpecial();if (dt == null) throw new Exception();combo.ValueMember = "SHOPID";combo.DisplayMember = "COMBO_DISPLAY";combo.DataSource = dt;}

关于winform的combobox联动问题的解决方案:

在使用DataSource添加加载值(从数据库),只要一赋值,添加ValueMember等就会触发selectedindexChanged事件,与写在formload里无关!

 private void Form1_Load(object sender, EventArgs e){this.listBox1.Items.Add("软件部");this.listBox1.Items.Add("人事部");this.listBox1.Items.Add("财务部");this.listBox1.Items.Add("硬件部");this.listBox1.SelectedIndex = -1;  //如果设置0,1,2,3则在load加载窗体时就会弹出对话框了!-1表示为空,因为设置1表示index变了,会触发事件this.comboBox1.Items.Add("软件部");this.comboBox1.Items.Add("人事部");this.comboBox1.Items.Add("财务部");this.comboBox1.Items.Add("硬件部");//this.comboBox1.SelectedIndex = 0;//会触发comboBox1_SelectedIndexChanged事件
DataTable dt1 = new DataTable("部门表");dt1.Columns.Add("部门项");DataRow dr1 = dt1.NewRow();dr1["部门项"] = "软件部";dt1.Rows.Add(dr1);DataRow dr2 = dt1.NewRow();dr2["部门项"] = "人事部";dt1.Rows.Add(dr2);comboBox2.ValueMember = "部门项";comboBox2.DisplayMember = "部门项";comboBox2.DataSource = dt1;//使用DataSource赋值,设置ValueMember后肯定会触发当前comboBox2的comboBox2_SelectedIndexChanged事件
}

三个combobox级联的时候,在form_load事件中添加方法:从数据库加载combobox1的值,会触发此combobox的事件Shop_SelectedIndexChanged,在事件中填写设置第二个combobox的数据库加载方法即可!

转载于:https://www.cnblogs.com/ammy714926/p/4195373.html

VS2010 winform开发笔记---combox的SelectedIndexChanged事件及级联问题相关推荐

  1. python winform开发_c#教程之.Net WInform开发笔记(三)谈谈自制控件(自定

    末日这天写篇博客吧,既然没来,那就纪念一下. 这次谈谈自制控件,也就是自定义控件,先上图,再说 1.扩展OpenFileDialog,在OpenFileDialog中添加各种文件(.txt,.jpg, ...

  2. C#WinForm开发笔记——基本控件(二)

    C#学习笔记--WinForm开发 一.控件 1.WebBrowser 1>属性 2.ComboBox 1>属性 2>事件 3.ListBox 1>属性 2>事件 4.P ...

  3. .Net Winform 开发笔记(四) 透过现象看本质

    写在前面: 从一个窗体的创建显示,再到与用户的交互,最后窗体关闭,这中间经历过了一系列复杂的过程,本文将从Winform应用程序中的Program.cs文件的第一行代码开始,逐步分析一个Winform ...

  4. 华为Harmony鸿蒙开发笔记七:公共事件

    公共事件类似于Android的广播,有可能就是广播,下面将提到一个疑点. 一个公共事件就两个使用地方,一个是发布事件,一个是接收事件,所以这里写两个Ability,MainAbility接收事件,Se ...

  5. Xamarin开发笔记—设备类amp;第三方弹窗的使用和注意事项

    一.设备类是Xamarin重要开发组成部分,下面介绍一下设备类的主要用法: //唤醒打电话 Device.OpenUri(new Uri("tel:180xxxxxxxx")); ...

  6. Xamarin开发笔记—百度在线语音合成

    续<是时候开始用C#快速开发移动应用了>刷屏之后,把C#开发移动应用的技术 => Xamarin,在这里和大家做一个分享! 语音合成:也被称为文本转换技术(TTS),它是将计算机自己 ...

  7. Xamarin开发笔记—设备类第三方弹窗的使用和注意事项

    一.设备类是Xamarin重要开发组成部分,下面介绍一下设备类的主要用法: //唤醒打电话 Device.OpenUri(new Uri("tel:180xxxxxxxx"));/ ...

  8. Android开发笔记(四十六)手机相关事件

    手机定位 有一类事件必须依赖于手机信号方能触发,如果把设备中的sim卡拔出,或者该设备本身不支持sim卡(如ipad),那么这类事件将永远不会被触发.在Android中,这类事件包括定位事件和手机信号 ...

  9. Android开发笔记(四十五)手势事件

    手势事件的流程 基本手势事件 基本的手势事件主要有如下三个方法: dispatchTouchEvent : 判断该事件是否需要下发.返回true表示需要下发给下级视图,返回false表示不需要下发(交 ...

最新文章

  1. JS高级程序设计拾遗
  2. 系统策略禁止安装python_Win10系统如何禁止自动安装捆绑软件?
  3. python车辆管理系统_Python简易版停车管理系统
  4. 洛谷 1608 路径统计
  5. 24-Thief小偷-Crime犯罪
  6. VO,PO,POJO的定义和区别
  7. Win32ASm学习[1]:RadASm下测试Debug
  8. 数据库-MySQL-数据库设计-主键与索引
  9. 一个硕士是怎样发表5篇SCI的
  10. 面试经历记录——东方海外OOCL上海软件开发中心实习生
  11. 实验|trunk的配置
  12. Dubbo(二):Dubbo和ZooKeeper的协同工作原理
  13. 计算机视觉论文-2021-03-31
  14. 阿波罗无法通过链接外网
  15. Zabbix自动发现和自动注册
  16. 【问】前台销售时卡顿
  17. Python格式化新年祝福语
  18. vs2019写html网页视频,最新Visual Studio 2019基础使用图文视频教程
  19. Android调整Bitmap图片大小
  20. 数据库系统概论---绪论

热门文章

  1. STAGE1能不能直接引导放在文件系统中的STAGE2.txt
  2. MySQL数据项目分析实战——淘宝用户行为分析
  3. java并发编程入门_Java并发编程入门,看这一篇就够了
  4. Photoshop AI Beta 超简单介绍
  5. J2EE 文件下载工具类
  6. 火车售票系统的设计与实现
  7. 【深度学习】Two-Stage目标检测算法
  8. LumaQQ及IP查询一(转)
  9. 各版本Arx包的下载
  10. 三种常用的流行病学指标:RR、AR和OR