我有一個Winform的組合框,當然我需要知道用戶何時選擇一個選項。問題是,每個事件類型都有其缺點:C#Winform - 檢測兩個事件是否被一個用戶操作觸發
當選擇發生在關閉的下拉列表中(但通過聚焦組合框並使用鍵盤箭頭向上和向下移動)時textChanged不會被觸發。
當下拉列表打開時,用戶通過鍵盤箭頭上下移動SelectionChangeCommittedHandler,然後單擊組合框標題或外部鼠標。
SlectedIndexChangedHandler會被觸發太多次,所以它會在網絡連接較弱的情況下減慢程序。
因此,我認爲要做到這一點的解決方案:
註冊到兩個SelectionChangeCommittedHandler和框TextChanged事件和案件都被解僱了,忽略了其中的一個。問題是我不知道如何檢測這種情況(=來自一個用戶操作的兩個事件)。
我很高興知道如何檢測,或者如果有的話,聽到更好的解決方案。
「SlectedIndexChangedHandler被觸發了太多次,所以它會在網絡連接較弱的情況下減慢程序的速度。」 - 如果網絡輸入/輸出阻塞你的用戶界面,那麼你總是「做錯了」......你究竟在做什麼?你的目標是什麼? – Fildor
@Fildor關於在一個組合框中選擇值,我使用選定的值作爲參數調用Web服務來獲取ad hoc數據,以填充下一個組合框。有沒有更好的方法來做到這一點? – Yehezkel
取決於一些要點:1.組合包含多少物品? 2.是否足夠快,只有在提交選擇後才提取? 3.依賴組合中有多少項目? ......我的目標是:是否有意義,例如「預取」第二個Combobox的所有可能的項目列表?你是否真的需要在每次改變時獲取物品? (=你需要*看到*項目在2組合中滾動時改變組合)? – Fildor