我有DropDownList一个项目.这DropDownList包含一个SelectedIndexChanged事件:
private void cbo_SelectedIndexChanged(object sender, EventArgs e){......}
Run Code Online (Sandbox Code Playgroud)
是否可以检查代码中的索引是否已更改,例如:
cbo.SelectedIndex = placering;
Run Code Online (Sandbox Code Playgroud)
,或者如果用户交互发生了变化?
由于 DropDownList 没有用于Focused控制的ComboBox属性,因此WinForms并不那么容易。一种方法是添加自定义标志,并在更改SelectedIndex属性之前更改其值。在事件处理程序内部,您可以检查此标志并重置其值:
private volatile bool isAutoFired = false;
Run Code Online (Sandbox Code Playgroud)
然后在代码中的某处:
isAutoFired = true;
cbo.SelectedIndex = placering;
private void cbo_SelectedIndexChanged(object sender, EventArgs e)
{
if(!isAutoFired)
{
// event is fired by user
}
isAutoFired = false;
}
Run Code Online (Sandbox Code Playgroud)