仅当从组合框中选择一项时执行操作

本文关键字:一项 操作 执行 组合 选择 | 更新日期: 2023-09-27 18:11:01

我有一个ComboBox,并在表单的加载事件中填充了数据。现在,当我从ComboBox中选择一个项目时,它应该执行一些操作。我知道一些事件可以用在这里,比如

SelectedIndexChanged
SelectedValueChanged

等。

但问题是,这些事件被提出,即使设置DataSource的组合框和选择默认索引等,当表单加载。

    ComboBox1.DataSource = dt;
    ComboBox1.SelectedIndex = -1;

我想做的是,我只是想执行一个动作,只有当选择一个项目的组合框。在这种情况下是否存在可以使用的鼠标事件?

仅当从组合框中选择一项时执行操作

comboBox.SelectionChangeCommitted事件似乎做到了这一点。

否则,你可以在绑定数据源之前设置一个布尔值,你可以在事件中使用它来忽略它。

private bool blnIgnoreEvent = false;
// in Form_load
blnIgnoreEvent = true;
ComboBox1.DataSource = dt;
blnIgnoreEvent = false;
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (!blnIgnoreEvent)
    {
        // go ahead
    }
}

我相信没有比这更好的事件了。XIVSolutions为绑定数据源时触发的事件提供了一个简洁的解决方案:如何在绑定数据源时防止选中的交换事件?

另外,既然SelectedIndexChanged适用于所有情况,为什么不处理第一种情况呢?

if (ComboBox1.SelectedIndex == -1)
  {
    return;
  }

如果-1对应的值你想要能够选择,只是使用一个私有字段来存储一些bool,你检查,以确定是否这是第一次执行的动作