我有一个ComboBox
,在表单的加载事件中,它填充了数据。现在,当我选择ComboBox
项时,它应该执行一些操作。所以我知道在这种情况下可以使用的事件很少,如
SelectedIndexChanged
SelectedValueChanged
等
但问题是,即使在设置ComboBox的DataSource
并在加载表单时选择默认索引等时,也会引发这些事件。
ComboBox1.DataSource = dt;
ComboBox1.SelectedIndex = -1;
我想做的是,我只想在我 选择组合框中的项目时执行操作。在这种情况下是否可以使用鼠标事件?
答案 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
,以确定它是否是第一次操作已被执行。