如何在WPF C#中实现复选框的反向选择

时间:2019-04-11 12:29:04

标签: c# wpf

是否可以在WPF中反选复选框? 例如:是否有3个复选框A,B,C,并且选中了复选框A和C,而未选中B。 Image1: Before clicking on the inverse button, A and C are checked 如果单击按钮进行反向选择,则应取消选中A和C,而应选中B,如图2所示

image2: After clicking on inverse button, B is checked and A , C are unchecked

Example for inverse selection

2 个答案:

答案 0 :(得分:0)

编辑: 在添加了要动态创建复选框的信息之后,我建议您使用以下XAML代码:

        <StackPanel Name="stk">                
            <!-- Add checkboxes dynamically to this stackpanel -->
            <Button Click="Button_Click">Invert</Button>
        </StackPanel>

还有此Click事件

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        foreach (var cb in stk.Children.OfType<CheckBox>())
        {
            cb.IsChecked = !cb.IsChecked;
        }
    }

使用它来添加复选框:

stk.Children.Add(new CheckBox());

答案 1 :(得分:-1)

 <StackPanel>
    <CheckBox Name="CB1" Content="A" IsChecked="True"></CheckBox>
    <CheckBox Name="CB2" Content="B"></CheckBox>
    <CheckBox Name="CB3" Content="C" IsChecked="True"></CheckBox>
    <Button Name="btnInvert" Content="Invert" Click="btnInvert_Click" ></Button>
 </StackPanel>

代码逻辑:

 private void btnInvert_Click(object sender, RoutedEventArgs e)
    {
        if (CB1.IsChecked == true && CB3.IsChecked == true)
        {
            CB2.IsChecked = true;
            CB1.IsChecked = false;
            CB3.IsChecked = false;
        }
        else
        {
            CB2.IsChecked = false;
            CB1.IsChecked = true;
            CB3.IsChecked = true;
        }
    }

或者简单地:

 private void btnInvert_Click(object sender, RoutedEventArgs e)
    {
        if (CB1.IsChecked == true && CB3.IsChecked == true)
        {
            CB2.IsChecked = true;
            CB1.IsChecked = false;
            CB3.IsChecked = false;
        }
    }

根据您的要求。

if (CB1.IsChecked == true && CB3.IsChecked == true&& CB2.IsChecked== false)
        {
            CB2.IsChecked = true;
            CB1.IsChecked = false;
            CB3.IsChecked = false;
        }
        else
        {
            CB2.IsChecked = false;
            CB1.IsChecked = true;
            CB3.IsChecked = true;
        }