0
A
回答
4
您可以使用複選框的Checked
(UnChecked
/CheckedChanged
)事件(S)(取決於如果它是一個WPF或WinForms應用程序):
CheckBox cb;
...
//WPF:
cb.Checked += (sender,e) => { if (!..check if new state is valid..) cb.Checked = !cb.Checked) };
cb.UnChecked += ...
//WinForms:
cb.CheckedChanged += ...
如果新的選中狀態是無效的,它(un)再次檢查複選框並將其置於有效狀態。
另一個(也是更好的)方法是在某個條件不滿足的情況下禁用複選框(如另一個控件的狀態)。如果用戶檢查了一個盒子,並且狀態沒有任何反饋就沒有改變,這會讓用戶感到困惑。
有關更多信息,請參閱MSDN for WPF/MSDN for WinForms。
1
更WPF的做法是:
- 定義上的複選框的
Checked
屬性綁定 - 分配結合Converter
- 在轉換決定是綁定的布爾屬性的返回值必須是
True
或False
如果你使用WPF強制你不要像「soluti」那樣跳入「windows窗體」儘可能多的(取決於你的時間,性能影響,複雜性......)。嘗試遵循WPF規則。
0
最佳方法(MVVM)是將複選框上的Click事件綁定到視圖模型上的Command。這將允許您攔截檢查事件,並禁用基於業務邏輯的功能。請參閱我的示例帖子,在這裏命令綁定。
http://tsells.wordpress.com/2010/06/23/command-binding-with-wpf-and-silverlight-net-4-0-with-m-v-vm/
相關問題
- 1. 在運行代碼之前檢查選擇器的存在嗎?
- 2. 如何在c#中更改複選框值時在DataGridView中檢查複選框?
- 3. Android - 在運行更多代碼之前渲染更改以查看代碼
- 4. 在運行時更改WPF源代碼
- 5. 如何在刪除一行之前再次檢查是否選中複選框
- 6. 如何在運行更新代碼之前檢查現有記錄?
- 7. StartActivity代碼行在線程啓動之前未實際運行
- 8. 如果複選框是檢查運行Mailchimp代碼
- 9. 如何在運行時更改wpf中的xmldataprovider源代碼?
- 10. 如何在ITextSharp中更改複選框的檢查類型
- 11. 在複選框中設置複選框來檢查wpf
- 12. 如何檢查代碼在python中運行之前是否可能?
- 13. 在JQuery Sortable中,如何在恢復動畫啓動之前運行函數?
- 14. 隱藏div複選框之前檢查
- 15. 代碼之前的SqlDataSource複選框
- 16. wpf listbox複選框更改顏色時檢查或選擇
- 17. 如何在啓動時檢查特定的複選框?
- 18. 偏好複選框更改時運行代碼的方式?
- 19. jQuery>關於複選框更改運行代碼
- 20. 如何在繼續之前檢查複選框是否被選中?
- 21. 啓用動態文本框檢查動態複選框在C#
- 22. 檢查一個複選框,並取消之前的複選框
- 23. 如何在android複選框檢查更改時接收事件?
- 24. 如何動態地更改複選框檢查狀態
- 25. 如何在複選框狀態發生變化之前進行檢查
- 26. 在WPF中,如何根據TextBox.Text值檢查複選框?
- 27. 在啓動線程之前無法更改WPF控件狀態
- 28. 如何在運行之前檢查python代碼的語法錯誤
- 29. 如何在vb.net中檢查複選框
- 30. 在更改angular2中複選框的值之前顯示確認
首選的方法是禁用複選框。對用戶來說更明顯的是他們無法檢查框。 –
是的,我也喜歡。如果用戶檢查一個盒子,它的狀態不會在沒有任何反饋的情況下發生變化,只會讓用戶感到困惑。我大膽澄清:) – Matten