目的:
RadioButton取消选中,两个RadioButton组合,如果其中一个已经被选中,再次点击则取消选中。
遇到的浅坑:
以下代码为错误,未能实现,无论怎么点击,RadioButton按钮一直选中不了。
if (RB6.IsChecked == true)//如果选中了,再选一次则取消选择
{
RB6.IsChecked = false;
}
错误原因:
RadioButton只要单击,在执行点击事件之前IsChecked属性状态已经变成true,所以,不能通过判断Checked来设置Chcked自己的值。
解决方法:
在外部加入一个标志值即可,通过外部变量记录Checked上次的值,然后不断的切换状态。
实现:
要点:如果点击当前RaddioButton,则必须对另外一个状态初始化,我在此设置的初始化为两个都是true,外部变量为true时,点击当前RadioButton可为IsChecked。代码如下:
bool RB6IsChecked = true;//RB6状态,初始状态为true,此状态下点击RB6,可变状态为IsChecked。
/// <summary> RadioButton 6度带</summary>
private void RB6_Click(object sender, RoutedEventArgs e)
{
if (RB6IsChecked)//如果选中了,再选一次则取消选择
{
RB6.IsChecked = true;
RB6IsChecked = false;
RB3IsChecked = true;//将RB3状态初始化
}
else
{
RB6IsChecked = true;
RB6.IsChecked = false;
RB3IsChecked = true;//将RB3状态初始化
}
}
bool RB3IsChecked = true;//RB3状态,初始状态为true,此状态下点击RB3,可变状态为IsChecked。
/// <summary> RadioButton 3度带</summary>
private void RB3_Click(object sender, RoutedEventArgs e)
{
if (RB3IsChecked)//如果选中了,再选一次则取消选择
{
RB3.IsChecked = true;
RB3IsChecked = false;
RB6IsChecked = true;//将RB6状态初始化
}
else
{
RB3IsChecked = true;
RB3.IsChecked = false;
RB6IsChecked = true;//将RB6状态初始化
}
}
版权声明:本文为du12300原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。