如何在标签中显示两个复选框的结果,其中一个正在被选中,甚至两个都在 WPF 中被选中?

Posted

技术标签:

【中文标题】如何在标签中显示两个复选框的结果,其中一个正在被选中,甚至两个都在 WPF 中被选中?【英文标题】:how can i display the result of two checkboxes in a label, which one is being checked or even both are being checked in a WPF? 【发布时间】:2020-07-17 10:32:44 【问题描述】:

非常感谢您的帮助。 我是编程界的新手,所以我真的需要你的帮助!

问题是:

我有两个复选框和一个标签,通过选中标签应显示的每个复选框,其中一个正在被选中。如果两者都被检查,标签应该显示两者都被检查,但在两行。如果未选中,则应清除其自己的相关句子,而不是标签中的整个文本。

我的 XML:

<Grid HorizontalAlignment="Center" 
          VerticalAlignment="Center">
        <StackPanel Width="350">
            <CheckBox x:Name="CheckboxOne" 
                      Content="First Checkbox"
                      Checked="FirstCheckbox"
                      Unchecked="UncheckedOne"/>
            <CheckBox x:Name="CheckboxTwo" 
                      Content="Second Checkbox"
                      Checked="SecondCheckbox"
                      Unchecked="UncheckedTwo"/>
            <Label Name="LabelText"
               Height="70"
               Grid.Column="1"/>

        </StackPanel>
    </Grid>

我的 C#

private void FirstCheckbox(object sender, RoutedEventArgs e)

    if (CheckboxOne.IsChecked == true)
    
        LabelText.Content += "First checkbox is being checked";
    


private void SecondCheckbox(object sender, RoutedEventArgs e)

    if (CheckboxTwo.IsChecked == true)
    
        LabelText.Content += "Second checkbox is being checked";
     

private void UncheckedOne(object sender, RoutedEventArgs e)

    if (CheckboxOne.IsChecked == false)
    
        LabelText.Content = "";
    

private void UncheckedTwo(object sender, RoutedEventArgs e)

    if (CheckboxTwo.IsChecked == false)
    
        LabelText.Content = "";          
    

我的一个期望应该是这样,以防两个都被检查!

第一个复选框被选中

第二个复选框被选中

非常感谢您的帮助!

【问题讨论】:

两个不同的句子是什么意思? 嘿,谢谢你的回复!我的意思是两行。 【参考方案1】:

下面的代码应该做你想做的事:

    private void FirstCheckbox(object sender, RoutedEventArgs e)
    
        MakeLable();
    
    private void SecondCheckbox(object sender, RoutedEventArgs e)
    
        MakeLable();
    
    private void UncheckedOne(object sender, RoutedEventArgs e)
    
        MakeLable();
    
    private void UncheckedTwo(object sender, RoutedEventArgs e)
    
        MakeLable();
    
    private void MakeLable()
    
        if (CheckboxOne.IsChecked && CheckboxTwo.IsChecked)
        
            LabelText.Content = $"First checkbox is being checkedEnvironment.NewLineSecond checkbox is being checked";
        
        else if (CheckboxOne.IsChecked && !CheckboxTwo.IsChecked)
        
            LabelText.Content = "First checkbox is being checked";
        
        else if (!CheckboxOne.IsChecked && CheckboxTwo.IsChecked)
        
            LabelText.Content = "Second checkbox is being checked";
        
        else
        
            LabelText.Content = "";
        
    

【讨论】:

非常感谢,首先我必须在每个 IsChecked 属性之后写 (==true)。现在,当两个复选框都被选中时,第一句之前会出现几个空格。顺便说一句,非常感谢! 你可以通过投票我的答案并选择它作为答案来感谢我;) 哦哈哈哈!我很抱歉!我不知道,我是农民!我希望,我点击了正确的图标 :)

以上是关于如何在标签中显示两个复选框的结果,其中一个正在被选中,甚至两个都在 WPF 中被选中?的主要内容,如果未能解决你的问题,请参考以下文章

如何对 AngularJS 中的两个字段求和并在标签中显示结果?

如何在结果表中仅显示选定的记录

一旦选中一个,在所有TableRow元素上显示复选框

打开新窗口时初始化角度变量

如何在edit.html.erb中显示复选框“选中状态”

如何在 .html 标记内附加 jQuery 变量值