【发布时间】:2014-10-31 19:06:00
【问题描述】:
我使用 MS Visual 2013 Express、C# 和 WPF。
在我的程序中有六个复选框,当其中一个被选中时,其他五个应该被取消选中。
我用谷歌搜索了过去两个小时,但作为 C# 初学者找不到解决方案。在java中,我只会写checkbox1.setSelected(false);
我在 C# 代码中添加了一个 clickevent,一个选中和未选中的事件。我在 .xaml 中添加了 Checked 和 Unchecked,但我不知道如何让它工作。
希望你能帮助我:)
=========================
我的解决方案:
感谢您的帮助。我用你建议的“IsChecked”尝试了一些随机的东西,并且幸运地让它工作。
.Xaml 看起来像:
<CheckBox x:Name="CheckBox1" ... Checked="CheckBox1_Checked" />
<CheckBox x:Name="CheckBox2" ... Checked="CheckBox2_Checked" />
<CheckBox x:Name="CheckBox3" ... Checked="CheckBox3_Checked" />
<CheckBox x:Name="CheckBox4" ... Checked="CheckBox4_Checked" />
<CheckBox x:Name="CheckBox5" ... Checked="CheckBox5_Checked" />
<CheckBox x:Name="CheckBox6" ... Checked="CheckBox6_Checked" />
CheckBox1 的 C# 代码:
private void CheckBox1_Checked(object sender, RoutedEventArgs e)
{
CheckBox1.IsChecked = true;
CheckBox2.IsChecked = false;
CheckBox3.IsChecked = false;
CheckBox4.IsChecked = false;
CheckBox5.IsChecked = false;
CheckBox6.IsChecked = false;
}
例如对于 CheckBox2:
private void CheckBox2_Checked(object sender, RoutedEventArgs e)
{
CheckBox2.IsChecked = true;
CheckBox1.IsChecked = false;
CheckBox3.IsChecked = false;
CheckBox4.IsChecked = false;
CheckBox5.IsChecked = false;
CheckBox6.IsChecked = false;
}
所以说到底,这是一件很容易的事。
【问题讨论】:
-
对我来说听起来像是
RadioButton。为什么不使用它呢?你可以免费获得这种行为! -
@StefanS:为了澄清,这是只有 一些 选项相互排斥的场景之一吗?如果它们是 all 互斥的,那么一定要使用 RadioButton,正如 BradleyDotNET 建议的那样。但如果只有某些是互斥的,那么 Blam 的建议可能就是你所需要的。
-
CheckBox2.IsChecked = false;看起来很像我的回答。您确实知道要检查答案。