下面的動作的情景:
平臺:視窗
IDE:微軟的Visual Studio 2008
語言:C#
.NET框架:3.5
我的應用程序包含2 buttons
- 「加載數據」和「停止加載數據」和multi-line textbox
。點擊「加載數據」button
後,一些數據開始在textbox
中加載。爲了防止用戶多次單擊「加載數據」button
,我已經在點擊後禁用了button
。當整個數據在textbox
中加載時,「加載數據」button
再次被激活。另一方面,當點擊「停止加載數據」button
時,停止加載數據(如果用戶希望在加載整個內容之前停止它)。如前所述,爲防止用戶多次點擊「加載數據」button
,我已禁用button
,意圖用戶只能點擊「停止加載數據」button
或等待整個數據爲載入textbox
。我實現了這一點。乍一看它似乎運作良好。但在測試過程中,我發現即使「加載數據」button
已禁用,如果用戶單擊了button
,雖然此時沒有任何事情發生,但只要整個數據加載並且button
再次啓用,該點擊就會生效發現在禁用狀態期間被執行。就好像程序正在記錄擊鍵和鼠標點擊並等待按鈕再次變爲活動狀態。但是我的程序中沒有這種按鍵或鼠標點擊記錄功能。什麼導致了這樣的活動?我怎樣才能防止這種行爲?
謝謝。防止用戶點擊一個特定的按鈕時,正在執行
0
A
回答
3
一種選擇是使用重入定點工作:
你可以定義一個int
場(0初始化),並通過Interlocked.Increment
在進入方法更新它,才能繼續進行,如果是1,在結束只是做一個Interlocked.Decrement
。
使其可見用戶,你可以在開始執行時禁用按鈕,並啓用它,當執行結束了......
BTW:長時間運行的任務應該異步完成(通過單獨的螺紋爲例)...
0
如果你把你的電話一個同步,它會鎖定整個頁面,直到加載完成。
否則你會只是做你已經嘗試過的方法,我想看看你的殘疾人狀態代碼,因爲東西告訴我你使它看起來被禁用,它仍然是一個功能按鈕
0
退房這個帖子:
http://www.codeguru.com/forum/showthread.php?t=480279
我首先想到的是消除事件處理程序,並在單擊事件的結束重新綁定它。此線程建議使用BackgroundWorker並將其設置爲異步。
0
我敢打賭,你甚至不能移動窗體,直到數據加載,並且你也無法停止加載數據。問題是整個表單凍結,直到加載完成。您必須將加載部件移動到單獨的線程中。
0
好了,再另silution:
在負載開始是隱藏load
按鈕代替它(說)顯示一個進度條。在完成加載或在stop loading
點擊使load
按鈕再次可見。在這種情況下,您可以避免您抱怨的「連鎖點擊」管理。
或管理一個按鈕。首先是load
,點擊後,變成stop load
。考慮到有限的屏幕空間,您會在移動環境中經常發現這樣的解決方案。但我認爲它也可以應用於桌面,並取得巨大成功。爲什麼不?
相關問題
- 1. 如果重複點擊按鈕,防止執行UIButton的IBAction
- 2. VBA點擊一個特定的按鈕
- 3. 防止onblur代碼執行,如果點擊提交按鈕
- 4. 防止按鍵點擊按鈕點擊即使在vb6中
- 5. 防止雙擊一個按鈕與knockout.js
- 6. 當用戶點擊輸入按鈕時觸發一個按鈕
- 7. 防止在多用戶環境中同時點擊相同的按鈕
- 8. jQuery防止回發點擊按鈕
- 9. Android - 防止按鈕點擊PopupWindow以外
- 10. 防止頁面刷新按鈕點擊
- 11. 執行按鈕與點擊
- 12. 點擊在鐵軌一個特定的按鈕使用水豚
- 13. 防止用戶點擊單選按鈕嘗試完成後
- 14. 定時器不停止按鈕點擊
- 15. 如何通過點擊另一個按鈕java執行按鈕?
- 16. 防止用戶點擊
- 17. 當用戶點擊vb.net中的關閉按鈕時執行一行代碼
- 18. 當我點擊另一個按鈕時,無法停止按鈕點擊事件
- 19. 當用戶點擊輸入時執行操作/按鈕
- 20. 當用戶雙擊一個按鈕時,防止函數被調用兩次?
- 21. 單擊一個按鈕時禁用多個按鈕點擊
- 22. 如何防止當我點擊一個按鈕
- 23. 如何防止多次點擊一個錨標籤按鈕
- 24. 如何在單擊按鈕時刪除一個特定行?
- 25. 防止Silverlight的datagrid選擇從點擊按鈕點擊改變?
- 26. 如何防止在Android的正面按鈕點擊時自動解除Appcompact AlertDialog?
- 27. 停止在winform按鈕上執行的功能點擊
- 28. 如何在用戶點擊Like Facebook按鈕後執行腳本?
- 29. 在用戶控件內執行按鈕點擊
- 30. 在Android SDK中執行點擊按鈕
你是否因爲不使用後臺線程來執行操作而阻止了用戶界面? – Matthias 2012-03-14 14:47:50
@ winSharp93:我正在使用後臺線程來執行操作。但我仍然遇到了一些問題。感謝Yahia,因爲建議的解決方案適合我。 – OutOfBoundsException 2012-03-14 15:08:51