Winforms:触发哪个事件?combobox.selectedindexchanged OR bindingsour



假设我们在winforms应用程序中有一个Combobox,其项目绑定到Bindingsource

当用户更改combobox中的选定项目时,我需要触发一个事件。

我应该处理combobox.selectedindexchanged事件还是bindingsource.currentchanged事件。在性能或其他方面哪个更好?

我搜索了很多以找到一篇文章或关于它的东西,但找不到直接和清晰的东西。我感谢任何建议或解决方法。

更新

我需要在用户从combobox中选择项目后ID调用基于所选对象的函数。(ID可从Combobox1.SelectedValuebindingSource1.Current.ID访问(。 在这种情况下,我应该选择哪个事件?

如果您希望在

最终用户选择UI中的任何项目时处理事件,则应使用combobox.selectedindexchanged,因为bindingsource.currentchanged可能由于MSDN博客BindingSource.CurrentChanged Event上提到的数字原因而触发,因此,如果您出于MSDN中提到的任何原因需要处理事件,那么它将不必要地通过您可能已为选择更改事件编码的逻辑。在处理事件时,您的代码应该是特定的。

如果 ComboBox 绑定到 BindingSource,你通常会把它留在那里。如果确实需要利用事件,最好在业务对象中创建更多属性。例如,假设您要禁用一个按钮,如果组合框是索引值 == 0,只需在业务对象中创建一个属性,按钮的 Enabled 属性绑定到该属性,例如:

public virtual bool IsFunctionEnabled
{
  get { return (An_Items_SelectedIndex > 0); }
}

如果您确实需要在 ComboBox 的选定索引更改事件中执行操作,我倾向于在表示层中执行此操作,因为我不建议使用绑定源代码管理或其事件。

最好的解决方案是处理业务对象中的所有内容,并通过 BindingSources 绑定控件。在表示层中执行任何逻辑都很难进行测试,并且更改绑定源中的任何内容都会增加大量测试。

毕竟,我开始知道使用Combobox.SelectedIndexChanded事件应该更好,因为我正在与用户交互并寻找来自 UI 的响应。虽然这里的事件对我做同样的事情,但Bindingsource.CurrentChanged事件可用于我想从任何地方跟踪当前对象更改,例如列表更改或其他内容,而不是完全是 UI。我相信最好在这里使用combobox事件。

相关内容

  • 没有找到相关文章

最新更新