簡體   English   中英

Winforms:哪個事件要觸發? combobox.selectedindexchanged或bindingsource.currentchanged

[英]Winforms: Which event to fire? combobox.selectedindexchanged OR bindingsource.currentchanged

假設我們在winforms應用程序中有一個Combobox ,它的項綁定到Bindingsource

當用戶更改combobox的選定項目時,我需要觸發一個事件。

我應該處理combobox.selectedindexchanged事件還是bindingsource.currentchanged事件。 在性能方面還是其他方面哪個更好?

我已經進行了大量搜索,以查找文章或有關文章的內容,但找不到清晰明確的內容。 我感謝任何建議或解決方法。

UPDATE

用戶從combobox選擇一個項目后,我需要基於所選對象ID調用一個函數。 (可從Combobox1.SelectedValuebindingSource1.Current.ID兩者訪問ID )。 在這種情況下,我應該選擇哪個事件?

如果將ComboBox綁定到BindingSource,則通常將其保留在該位置。 如果確實需要利用事件,那么最好在Business Object中創建更多屬性。 例如,如果您要在組合框的索引值== 0時禁用按鈕,則只需在Business Object中創建一個屬性,將Button的Enabled屬性綁定到該屬性,例如:

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

如果您確實需要在ComboBox的選定索引更改事件中進行操作,則我傾向於在Presentation Tier中進行操作,因為我不建議混入綁定源控件或其事件。

最好的解決方案是處理業務對象中的所有內容,並通過BindingSources綁定控件。 在Presentation Tier層中執行任何邏輯都會使測試變得困難,而更改BindingSources中的任何內容都會增加很多測試。

如果您希望在最終用戶選擇UI中的任何項目時處理事件,則應使用combobox.selectedindexchanged因為可以出於多種原因觸發bindingsource.currentchanged ,例如在MSDN博客上提到的BindingSource.CurrentChanged Event,因此,如果需要,處理MSDN中提到的任何原因的事件,那么它將不必要地通過您可能已經為選擇更改事件編碼的邏輯。 處理事件時,您的代碼應特定。

畢竟,我知道使用Combobox.SelectedIndexChanded事件會更好,因為我正在與用戶進行交互並在UI中尋找響應。 盡管這里的事件對我來說是相同的,但是可以使用Bindingsource.CurrentChanged事件,以防我想要從列表更改之類的地方而不是UI跟蹤當前對象的更改。 我相信最好在這里使用combobox事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM