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;//重新订阅事件
  • 相关阅读:
    Spring Security OAuth2 源码分析
    Spring Security OAuth2 token权限隔离
    Spring Cloud Feign 使用OAuth2
    Spring Security OAuth2 授权码模式
    全链路追踪spring-cloud-sleuth-zipkin
    Spring Security OAuth2 授权失败(401) 问题整理
    使用ShardingJdbc分表
    Kubectl常用命令
    Spring Cloud Zuul实现IP访问控制
    一次非核心接口(信息提示类)被刷引发的思考
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9910317.html
Copyright © 2011-2022 走看看