设置数据源时事件的触发
Posted jizhiqiliao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置数据源时事件的触发相关的知识,希望对你有一定的参考价值。
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";(都触发)
避免触发事件的方式有以下两种:
- 设置一个字段,通过判断忽略前几次的事件触发
int temp = 0; // code omited temp++; if(temp > 3) { // code omited }
- 取消事件的订阅,然后再重新订阅事件
comboBox1.SelectedIndexChanged -= comboBox1_SelectedIndexChanged;//删除事件 // code omited comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;//重新订阅事件
以上是关于设置数据源时事件的触发的主要内容,如果未能解决你的问题,请参考以下文章
如何设置 vscode 的代码片段,以便在自动完成后自动触发 vscode 的智能感知?