wpf中的checkbox怎么互斥?
答案:3 悬赏:50 手机版
解决时间 2021-11-28 11:57
- 提问者网友:酱爆肉
- 2021-11-28 08:49
wpf中的checkbox怎么互斥?
最佳答案
- 五星知识达人网友:duile
- 2021-11-28 09:32
checkbox没办法只通过设置来实现你要的功能,不过你可以通过代码实现:
xaml:
后台代码:
private void chk_Click(object sender, RoutedEventArgs e)
{
var checkBoxes = new[] { chk, chk2, chk3};
var current = (CheckBox)sender;
foreach (var checkBox in checkBoxes)
{
if (checkBox != current)
{
checkBox.IsChecked = !current.IsChecked;
}
}
}
当然, 你还可以看RadioButton能不能达到你的要求,因为RadioButton可以通过设置GroupName来实现分组的目的。
xaml:
后台代码:
private void chk_Click(object sender, RoutedEventArgs e)
{
var checkBoxes = new[] { chk, chk2, chk3};
var current = (CheckBox)sender;
foreach (var checkBox in checkBoxes)
{
if (checkBox != current)
{
checkBox.IsChecked = !current.IsChecked;
}
}
}
当然, 你还可以看RadioButton能不能达到你的要求,因为RadioButton可以通过设置GroupName来实现分组的目的。
全部回答
- 1楼网友:傲气稳了全场
- 2021-11-28 11:11
三个checkbox的checkedchanged事件分别与以下代码绑定
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
checkBox2.Checked = false;
checkBox3.Checked = false;
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
{
checkBox1.Checked = false;
checkBox3.Checked = false;
}
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
if (checkBox3.Checked)
{
checkBox1.Checked = false;
checkBox2.Checked = false;
}
}
如果checkbox数量多就要考虑用循环,遍历。现在这个方法在只有三个checkbox的情况下还是很好用的。
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
checkBox2.Checked = false;
checkBox3.Checked = false;
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
{
checkBox1.Checked = false;
checkBox3.Checked = false;
}
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
if (checkBox3.Checked)
{
checkBox1.Checked = false;
checkBox2.Checked = false;
}
}
如果checkbox数量多就要考虑用循环,遍历。现在这个方法在只有三个checkbox的情况下还是很好用的。
- 2楼网友:孤老序
- 2021-11-28 10:56
我不知道你要做什么 没搞清楚,先关注
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯