C# 是否在SelectionChangeCommitted之前更改了对SelectedIndex的处理?

C# 是否在SelectionChangeCommitted之前更改了对SelectedIndex的处理?,c#,.net,winforms,combobox,C#,.net,Winforms,Combobox,我正在处理一个异步绑定控件,该控件继承一个ComboBox(在其他场景中是一个Textbox,但这并不相关)。我已经在这个应用程序中替换了表单上的一堆现有组合框,对于大多数控件来说,这些组合框都工作得很好。除了一个 My box使用以下代码覆盖SelectedIndexChanged方法: protected override void OnSelectedIndexChanged(EventArgs e) { if (!Helper.ItemsApplied) return; //

我正在处理一个异步绑定控件,该控件继承一个ComboBox(在其他场景中是一个Textbox,但这并不相关)。我已经在这个应用程序中替换了表单上的一堆现有组合框,对于大多数控件来说,这些组合框都工作得很好。除了一个

My box使用以下代码覆盖SelectedIndexChanged方法:

protected override void OnSelectedIndexChanged(EventArgs e)
{
  if (!Helper.ItemsApplied)
    return; //don't worry! the index will be selected when the items are applied!

  _selectedValue = Helper.GetValue(Text);
  base.OnSelectedIndexChanged(e);
}
这可以正常工作,直到有人尝试使用事件处理值更改。但完全合乎情理;我不应该更改他们的代码以使用
SelectedIndexChanged
,因为当以编程方式调用该值时,不应该执行此功能(请参阅)

但是,当以编程方式更改索引时,确实需要执行我的功能,但它需要在
SelectionChangeCommitted
事件执行之前执行
SelectionChangeCommitted
事件在
SelectedIndexChanged
事件之前触发


有没有办法让我绕过这一关?最好只更改控件中的代码,而不更改其形式?

您可以将寻址
帮助程序的代码放入一个方法中,该方法在两个事件中都调用(在
base
调用之前),并在
Helper.GetValue
中使用一个参数来告诉您来自哪个事件?这没有帮助。问题是,当调用SelectionChangeCommitted事件时,我需要SelectValue属性,当selectedIndex以编程方式更改时,我需要SelectedValue属性更改。