码迷,mamicode.com
首页 > 其他好文 > 详细

设置数据源时事件的触发

时间:2018-11-05 19:13:47      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:size   combobox   用户   方式   display   code   +=   exchange   编程   

SelectedIndexChanged和SelectedValueChanged可以通过编程更改属性来触发事件,SelectionChangeCommitted事件必须由用户操作才能触发。

在初始化时(设置源)SelectedIndexChanged和SelectedValueChanged都会被调用。

在不同的执行顺序下,触发的情况也不同:

顺序一:

this.comboBox1.DisplayMember = "userName";(不触发)
this.comboBox1.ValueMember = "userAge";(只触发SelectedValueChanged)
this.comboBox1.DataSource = dt;(都触发)

顺序二:

this.comboBox1.ValueMember = "userAge";(只触发SelectedValueChanged)
this.comboBox1.DisplayMember = "userName";(不触发)
this.comboBox1.DataSource = dt; (两者都触发)

顺序三:

this.comboBox1.DataSource = dt; (都触发)
this.comboBox1.DisplayMember = "userName";(都触发)
this.comboBox1.ValueMember = "userAge";(只触发SelectedValueChanged事件)

顺序四:

this.comboBox1.DataSource = dt; (都触发)
this.comboBox1.ValueMember = "userAge";(都触发,其中SelectedValueChanged触发两次)
this.comboBox1.DisplayMember = "userName";(都触发)

避免触发事件的方式有以下两种:

  1. 设置一个字段,通过判断忽略前几次的事件触发
    int temp = 0;
    // code omited
    temp++;
    if(temp > 3)
    {
        // code omited    
    }
  2. 取消事件的订阅,然后再重新订阅事件
    comboBox1.SelectedIndexChanged -= comboBox1_SelectedIndexChanged;//删除事件
    // code omited
    comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;//重新订阅事件

设置数据源时事件的触发

标签:size   combobox   用户   方式   display   code   +=   exchange   编程   

原文地址:https://www.cnblogs.com/jizhiqiliao/p/9910317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!