2011-08-28 72 views

回答

4

您可以使用複選框的CheckedUnChecked/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

+2

首選的方法是禁用複選框。對用戶來說更明顯的是他們無法檢查框。 –

+0

是的,我也喜歡。如果用戶檢查一個盒子,它的狀態不會在沒有任何反饋的情況下發生變化,只會讓用戶感到困惑。我大膽澄清:) – Matten

1

更WPF的做法是:

  1. 定義上的複選框的Checked屬性綁定
  2. 分配結合Converter
  3. 在轉換決定是綁定的布爾屬性的返回值必須是TrueFalse

如果你使用WPF強制你不要像「soluti」那樣跳入「windows窗體」儘可能多的(取決於你的時間,性能影響,複雜性......)。嘗試遵循WPF規則。

相關問題