VS2010 winform开发笔记---combox的SelectedIndexChanged事件及级联问题
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 ComboBox的DataSource,DisplayMember和ValueMember属性的
设置顺序的问题。《参考博客》
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事件及级联问题相关推荐
- python winform开发_c#教程之.Net WInform开发笔记(三)谈谈自制控件(自定
末日这天写篇博客吧,既然没来,那就纪念一下. 这次谈谈自制控件,也就是自定义控件,先上图,再说 1.扩展OpenFileDialog,在OpenFileDialog中添加各种文件(.txt,.jpg, ...
- C#WinForm开发笔记——基本控件(二)
C#学习笔记--WinForm开发 一.控件 1.WebBrowser 1>属性 2.ComboBox 1>属性 2>事件 3.ListBox 1>属性 2>事件 4.P ...
- .Net Winform 开发笔记(四) 透过现象看本质
写在前面: 从一个窗体的创建显示,再到与用户的交互,最后窗体关闭,这中间经历过了一系列复杂的过程,本文将从Winform应用程序中的Program.cs文件的第一行代码开始,逐步分析一个Winform ...
- 华为Harmony鸿蒙开发笔记七:公共事件
公共事件类似于Android的广播,有可能就是广播,下面将提到一个疑点. 一个公共事件就两个使用地方,一个是发布事件,一个是接收事件,所以这里写两个Ability,MainAbility接收事件,Se ...
- Xamarin开发笔记—设备类amp;第三方弹窗的使用和注意事项
一.设备类是Xamarin重要开发组成部分,下面介绍一下设备类的主要用法: //唤醒打电话 Device.OpenUri(new Uri("tel:180xxxxxxxx")); ...
- Xamarin开发笔记—百度在线语音合成
续<是时候开始用C#快速开发移动应用了>刷屏之后,把C#开发移动应用的技术 => Xamarin,在这里和大家做一个分享! 语音合成:也被称为文本转换技术(TTS),它是将计算机自己 ...
- Xamarin开发笔记—设备类第三方弹窗的使用和注意事项
一.设备类是Xamarin重要开发组成部分,下面介绍一下设备类的主要用法: //唤醒打电话 Device.OpenUri(new Uri("tel:180xxxxxxxx"));/ ...
- Android开发笔记(四十六)手机相关事件
手机定位 有一类事件必须依赖于手机信号方能触发,如果把设备中的sim卡拔出,或者该设备本身不支持sim卡(如ipad),那么这类事件将永远不会被触发.在Android中,这类事件包括定位事件和手机信号 ...
- Android开发笔记(四十五)手势事件
手势事件的流程 基本手势事件 基本的手势事件主要有如下三个方法: dispatchTouchEvent : 判断该事件是否需要下发.返回true表示需要下发给下级视图,返回false表示不需要下发(交 ...
最新文章
- JS高级程序设计拾遗
- 系统策略禁止安装python_Win10系统如何禁止自动安装捆绑软件?
- python车辆管理系统_Python简易版停车管理系统
- 洛谷 1608 路径统计
- 24-Thief小偷-Crime犯罪
- VO,PO,POJO的定义和区别
- Win32ASm学习[1]:RadASm下测试Debug
- 数据库-MySQL-数据库设计-主键与索引
- 一个硕士是怎样发表5篇SCI的
- 面试经历记录——东方海外OOCL上海软件开发中心实习生
- 实验|trunk的配置
- Dubbo(二):Dubbo和ZooKeeper的协同工作原理
- 计算机视觉论文-2021-03-31
- 阿波罗无法通过链接外网
- Zabbix自动发现和自动注册
- 【问】前台销售时卡顿
- Python格式化新年祝福语
- vs2019写html网页视频,最新Visual Studio 2019基础使用图文视频教程
- Android调整Bitmap图片大小
- 数据库系统概论---绪论