zoukankan      html  css  js  c++  java
  • 设置数据源时事件的触发

    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;//重新订阅事件
  • 相关阅读:
    MS SQL Server获取月份名称缩写
    视频站点程序
    视频站点程序 Ver2
    Infor Syteline 数据库增长月报表
    判断是否有选择RadioButtonList
    获取用户控件中控件的ID
    FileUpload上传图片前首先预览一下
    为TextBox装饰水印
    导航条的重构
    用户自己排序记录
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9910317.html
Copyright © 2011-2022 走看看