仅当我从组合框中选择项目时才执行操作

时间:2014-06-30 13:56:08

标签: c# .net winforms events combobox

我有一个ComboBox,在表单的加载事件中,它填充了数据。现在,当我选择ComboBox项时,它应该执行一些操作。所以我知道在这种情况下可以使用的事件很少,如

SelectedIndexChanged

SelectedValueChanged

但问题是,即使在设置ComboBox的DataSource并在加载表单时选择默认索引等时,也会引发这些事件。

    ComboBox1.DataSource = dt;

    ComboBox1.SelectedIndex = -1;

我想做的是,我只想在 选择组合框中的项目时执行操作。在这种情况下是否可以使用鼠标事件?

2 个答案:

答案 0 :(得分:2)

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
    }
}

答案 1 :(得分:1)

我不相信还有另一个事件可以更好地处理你想要做的事情。 XIVSolutions在绑定数据源时为事件触发提供了一个简洁的解决方法:How to prevent selectedindexchanged event when DataSource is bound?

此外,由于SelectedIndexChanged适用于所有情况,为什么不只处理第一个?

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

如果-1对应于您希望能够选择的值,只需使用私有字段来存储您检查的某些bool,以确定它是否是第一次操作已被执行。