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;//重新订阅事件
  • 相关阅读:
    Java Script 读书笔记 (二) 错误处理机制 -- 没看懂,待review
    Visual Studio Code Tips
    SQLServer数据库分页查询
    Sql server inner join......on
    Sql server if-else以及switch
    git介绍
    Fiddler
    cocos2d对动画的各种操作
    SQLI
    Windows系统命令备份
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9910317.html
Copyright © 2011-2022 走看看