Winform ComboBox 绑定数据源 触发SelectedIndexChanged事件 处理办法

最近寫Winform程式,發現Winform中的ComboBox和Web中的Dropdown相差很大,在ComboBox 绑定数据源 會触发SelectedIndexChanged事件,很困擾,查找了資料,處理方法大體分為三種

1.添加一个标记位,在绑定前设置为false,绑定完成后设置回true(個人覺得用起來的很奇怪)

void BindComboBox()
{
flag=false;
ComboxBox1.ValueMember="ValueColumn";
ComboxBox1.DisplayMember="DisplayColumn";
ComboxBox1.DataSource=DataTable1;
flag=true;
}

privatevoid ComboxBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if(flag)
{
//Do something
}
}

2.绑定前,将SelectedIndexChanged的委托去掉,等绑定完成后,再添加事件委托(覺得比較複雜)

void BindComboBox()
{ //去除委托
ComboBox1.SelectedIndexChanged -= new EventHandler(ComboBox1_SelectedIndexChanged);
ComboBox1.DataSource = null;
ComboBox1.ValueMember = "ValueColumn";
ComboBox1.DataSource = DataTable1;
//添加委托
ComboBox1.SelectedIndexChanged += new EventHandler(ComboBox1_SelectedIndexChanged);
ComboBox1.DisplayMember = "DisplayColumn";
}

3.判斷是否是選擇狀態(最後本人用的)

privatevoid ComboxBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if(ComboxBox1.ContainsFocus)
{
//Do something
}
}

原文地址:https://www.cnblogs.com/superfeeling/p/12392959.html

时间: 2024-08-28 15:35:04

Winform ComboBox 绑定数据源 触发SelectedIndexChanged事件 处理办法的相关文章

[WinForm]为ComboBox绑定数据源并提供下拉提示

关键代码: /// <summary> /// 为ComboBox绑定数据源并提供下拉提示 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="combox">ComboBox</param> /// <param name="list">数据源</param>

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

DisplayMember绑定需要显示的数据表字段, 而ValueMember绑定需要获取选择的项的值. 然后通过 combo.SelectedValue就可以取得选中项的值了. DisplayMember会显示在你的下拉框中,ValueMember的值和下拉框显示的值一一对应,并不在下拉框显示的. 所对应的值就是一条记录里面 有标识列ID(唯一) 有显示的列(如名称,可重复)ValueMember 可以成为名称,也可成为ID但是一般来说都只绑定ID 这样好处理,也很方便识别,DisplayMe

[转]如何在数据绑定时不让combox控件触发SelectedIndexChanged事件

this.cboVendor.SelectedIndexChanged -= new System.EventHandler(this.cboVendor_SelectedIndexChanged); cboVendor.DataSource = myClass.RunQueryCmd(strSqlCmd); cboVendor.DisplayMember = "SupplierCode"; //添加事件 this.cboVendor.SelectedIndexChanged += n

GridView点击行触发SelectedIndexChanged事件

1.在<% @Page ...... %>指令中添加 EnableEventValidation="false" 2.在RowDataBound事件中添加 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { switch (e.Row.RowType) { case DataControlRowType.DataRow: e.Row.Attributes["s

DropDownList 控件不能触发SelectedIndexChanged 事件

相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBack="True" 没有写: 2.DropDownList 控件的数据绑定没有放在if (!Page.IsPostBack) 里面: 3.DropDownList 控件选定项的value 值只有在发生变化时,才将信息发往服务器: 有人问 (1)AutoPostBack="True&

.NET MVC easyUI中Combo Combobox绑定数据源的问题

这个问题我因为没有仔细看书,在网上查资料时看了好多.一直没遇到好的解决方法.经过同学提醒才解决了.问题不大,但是是新手比较头疼的吧.下面我把解决方案写一下. 前台: Emr_Doc_Emr_Info/Index1.aspx <td class="td-right1-color"> 科室:</td> <td style="width: 160px"> <input class="easyui-combobox&quo

jquery移除、绑定、触发元素事件

unbind(type [,data]) //data是要移除的函数 $('#btn').unbind("click"); //移除click $('#btn').unbind(); //移除所有 对于只需要触发一次的,随后就要立即解除绑定的情况,用one() $('#btn').one("click",function(){.......}); 触发操作:trigger() 方法触发被选元素的指定事件类型. $('#btn').trigger("clic

div无法触发blur事件解决办法

默认情况下div无法获取焦点,无法触发focus与blur事件,猜测span,a等标签也无法触发焦点事件(input:button,及button标签可以触发) 如何使div触发blur事件:可以给div加上tabindex属性 在线演示:http://sandbox.runjs.cn/show/e0bvfcag 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT

winform combobox绑定数据

mboBox下拉菜单控件,在数据库内的ComboBox应用的表进行修改时,如果是用的普通方法,显示数据一个方法,添加数据一个方法 这样会导致程序后期维护难度增加,在这里使用数据绑定来让ComboBox数据实现根据数据库对应表数据显示,降低数据维护难度. 1.首先将要ComboBox所需要的表的数据全部查询出来 2.对查询获得的数据用实例化泛型集合List进行接收 3.设置需要显示的列[数据] 4.设置对数据库操作需要的列[数据] public Form3() //窗体打开自动执行的数据 { In