我遇到一個問題,點擊某個按鈕並且過程需要一段時間後,用戶在GUI屏幕上單擊其他位置。這些按鈕點擊會在調度程序中排隊,因此在初始按鈕點擊後,其他位置會被點擊。我想阻止這種情況發生,所以其他UI控件在完成處理後不會被點擊。我能想到的唯一解決方案就是鎖定鼠標事件並防止它們在按鈕點擊正在處理時傳遞給應用程序。這是最好的方法嗎?禁用鼠標點擊
Q
禁用鼠標點擊
2
A
回答
2
如果該過程需要一段時間,通常建議在工作線程而不是GUI線程中執行此類過程。因此,使用BackgroundWorker
辦法想在這個CodeProject article,然後使用具有特定的按鈕關聯的命令CanExecute
方法,就像這裏:
WPF Commanding – When do Commands re-evaluate their CanExecute method?
WPF – CanExecute refreshed
編輯:
可以綁定的IsEnabled
財產您的其他控件爲Command的CanExecute方法的結果。
How to disable combobox when command canExecute returns false
How to bind a ComboBoxItem's IsEnabled property to the result of a Command's CanExecute method
2
解決這個問題的一個更簡單的方法是在某些長時間運行的任務正在進行時彈出一些半透明覆蓋圖(可能包含進度信息)。這將可靠地禁用整個用戶界面,直到您刪除覆蓋(這使您不必執行大量更改/綁定IsEnabled屬性)。
相關問題
- 1. 焦點禁用鼠標點擊
- 2. 如何禁用鼠標左鍵點擊?
- 3. 禁用鼠標點擊當出格
- 4. 切換禁用鼠標點擊
- 5. 在Emacs中禁用鼠標點擊
- 6. 如何在點擊對象後禁用鼠標點擊?
- 7. 禁用鼠標點擊按鈕單擊並啓用它
- 8. WinForms禁用雙擊並接受所有鼠標點擊?
- 9. 禁用鼠標多點擊並更改雙擊間隔
- 10. 禁用鼠標點擊顯示WPF中的忙/等待光標
- 11. 用鼠標點擊滑動
- 12. Extjs DatePicker:如何使用鼠標點擊禁用日期啓用「點擊/選擇」?
- 13. SDL鼠標點擊
- 14. Powershell,鼠標點擊
- 15. SeaDragon鼠標點擊
- 16. 鼠標點擊JTable
- 17. 鼠標點擊java
- 18. 鼠標點擊jquery
- 19. 如何禁用網頁瀏覽器控件內的鼠標/鼠標點擊?
- 20. 鼠標點擊原點
- 21. 繪圖點鼠標點擊
- 22. 讓鼠標在鼠標點擊鼠標後跟着鼠標
- 23. 鼠標點擊標籤
- 24. CodedUi:鼠標點擊座標
- 25. 禁用/啓用的mouseenter和鼠標離開上點擊 - jQuery的
- 26. 禁用CheckBox在啓用後對鼠標點擊作出反應
- 27. 禁用鼠標中鍵點擊使用jQuery在Firefox
- 28. 如何禁用左鍵點擊鼠標使用jQuery的div?
- 29. HighCharts:基於鼠標點擊事件啓用/禁用tootip
- 30. 區分機器人鼠標點擊和人類鼠標點擊
這些是如何在單擊後禁用單個按鈕的很好的示例,但是它不會阻止在處理按鈕命令執行處理程序時單擊其他按鈕或UI組件(如組合框)。 – Robert 2011-05-16 16:20:15
@Robert:編輯我的答案。 – Paya 2011-05-16 16:33:06