下拉列表检查索引是否由代码或选择更改

Moe*_*eck 5 c# winforms

我有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)

,或者如果用户交互发生了变化?

Fab*_*jan 5

由于 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)