Combobox事件SelectedValueChanged

时间:2010-05-08 06:50:54

标签: c# winforms combobox

我有一个简单的问题可能是有人在我之前问过但我找不到它。让我说我有数据表,它有一些来自数据库的数据,我想将它绑定到一个组合框我使用像这样的标准代码

 comboBox1.BeginUpdate( );
 comboBox1.ValueMember = "id";
 comboBox1.DisplayMember = "name";
 comboBox1.DataSource = dt;
 comboBox1.EndUpdate( );

问题是在此绑定期间事件SelectedValueChanged被触发。问题是当外部值发生变化时重新绑定组合几次,每次我必须像这样做一些事情

 comboBox1.SelectedIndexChanged -= new System.EventHandler( this.comboBox1_SelectedValueChanged );

我的问题是有一个更聪明的方法来跳过事件,当我来自数据绑定而不是来自用户输入。问题是,我想要做一些如何在我的控制中继承组合框并且不是每次都在每个从 最诚挚的问候,左边和

2 个答案:

答案 0 :(得分:18)

尝试使用 SelectionChangeCommitted 事件。

来自MSDN文档:

  只有在用户更改时才会引发

SelectionChangeCommitted   组合框选择。 请勿使用 SelectedIndexChanged 或    SelectedValueChanged 以捕获用户更改,因为这些事件是   当选择以编程方式改变时也会引发。

答案 1 :(得分:0)

我总是这样做,因为太空饼干说。我创建一个名为_isLoading的全局布尔变量,并在加载我的组合框时将其设置为true,然后在完成时返回false。然后在事件处理程序中第一行是

if(_isLoading) return;