我在项目中有一个DropDownList
。此DropDownList
包含SelectedIndexChanged
事件:
private void cbo_SelectedIndexChanged(object sender, EventArgs e){......}
是否可以检查代码中的索引是否已更改,例如:
cbo.SelectedIndex = placering;
,或者用户互动是否发生了变化?
答案 0 :(得分:4)
由于DropDownList没有Focused
ComboBox
控制WinForms
中的属性,因此并不容易。一种方法是添加自定义标志,并在更改SelectedIndex
属性之前更改其值。在事件处理程序内部,您可以检查此标志并重置其值:
private volatile bool isAutoFired = false;
然后在代码的某处:
isAutoFired = true;
cbo.SelectedIndex = placering;
private void cbo_SelectedIndexChanged(object sender, EventArgs e)
{
if(!isAutoFired)
{
// event is fired by user
}
isAutoFired = false;
}
答案 1 :(得分:1)
您可以在可编程地更改选择之前删除代码中的事件处理程序,然后将其添加回来。这是我最喜欢的方法。不需要旗帜。
cbo.SelectedIndexChanged -= cbo_SelectedIndexChanged;
cbo.SelectedIndex = 1 // or what you do to change the index
cbo.SelectedIndexCHanged += new EventHandler(cbo_SelectedIndexChanged);