Concat两个字符串并将其打印在标签c#wpf上

时间:2017-10-30 14:58:28

标签: c# wpf

我有几个radioButtons存储在两个不同的字符串中。 我需要将它们打印在标签上。我该怎么办?

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        String cad1 = null;
        String cad2 = null;

        if (rad1.IsChecked == true)
        {
            cad1 = "Ok";
        }
        else if (rad2.IsChecked == true)
        {
            cad1 = "Ok Cancel!";
        }
        else if (rad3.IsChecked == true)
        {
            cad1 = "Yes No";
        }
        else if (rad4.IsChecked == true)
        {
            cad1 = "Yes  No Cancel";
        }
        else if (rad5.IsChecked == true)
        {
            cad1 = "Retry Cancel";
        }
        else if (rad6.IsChecked == true)
        {
            cad1 = "Abort Retry Cancel";
        }
        else if (rad7.IsChecked == true)
        {
            cad2 = "Information";
        }
        else if (rad8.IsChecked == true)
        {
            cad2 = "Exclamation";
        }
        else if (rad9.IsChecked == true)
        {
            cad2 = "Question";
        }
        else if (rad10.IsChecked == true)
        {
            cad2 = "Error";
        }

我需要打印这两个字符串的结果,但目前还没有打印第二个字符串

        cad1 = cad1 + cad2;
        lab2.Content = cad1;

    }
}

3 个答案:

答案 0 :(得分:2)

原因是你的所有cad2变量都包含在else if语句中。

修改行

else if (rad7.IsChecked == true)

if (rad7.IsChecked == true)

修改
我还建议删除所有== true,它们是不必要的。 如果在此事件后未使用cad1cad2,我建议您创建一个字符串变量,并将cad1cad2的值附加到它

var cont = "";  
if (rad1.IsChecked) cont += "Ok";  
...  
if (rad7.IsChecked) cad2 += "Information";  
...
lab2.Content = cont;

答案 1 :(得分:2)

如果第一个if不是真的话,Elsif只会得到评估,所以如果cad1得到一个值,cad2永远不会得到一个值。

此外,if (rad9.IsChecked == true)与`if(rad9.IsChecked)'完全相同

最后,如果您使用的是最新版本的C#,您可以使用ternaty运算符:

var cad1 = rad1.IsChecked
           ? "Ok"
           : rad2.IsChecked 
             ? "Ok Cancel!"
             : rad3.IsChecked
               ? "Yes No"
               : rad4.IsChecked
                 ? "Yes  No Cancel"
                 : rad5.IsChecked
                   ? "Retry Cancel"
                   : rad6.IsChecked
                     ? "Abort Retry Cancel"
                     : null;
var cad2 = rad7.IsChecked
           ? "Information"
           : rad8.IsChecked
             ? "Exclamation"
             : rad9.IsChecked
               ? "Question"
               : rad10.IsChecked
                 ? "Error"
                 : null;

或者,如果您更喜欢它更简洁:

var cad1 = rad1.IsChecked ? "Ok"
         : rad2.IsChecked ? "Ok Cancel!"
         : rad3.IsChecked ? "Yes No"
         : rad4.IsChecked ? "Yes  No Cancel"
         : rad5.IsChecked ? "Retry Cancel"
         : rad6.IsChecked ? "Abort Retry Cancel"
         : null;
var cad2 = rad7.IsChecked ? "Information"
         : rad8.IsChecked ? "Exclamation"
         : rad9.IsChecked ? "Question"
         : rad10.IsChecked? "Error"
         : null;

现在,我想知道rad1-10是否是radiobuttons,为什么我不能在名称中看到哪些属于同一组。我希望1-6在一个,7-10在另一组,但更好的命名将避免混淆和可能的错误......

答案 2 :(得分:1)

在你的if-else链中,你永远不会为cad1和cad2设置值,所以你永远不会得到正确的输出。

获得你想要的东西的简单方法是拆分链看起来像这个

    ... 
    else if (rad6.IsChecked == true)
    {
        cad1 = "Abort Retry Cancel";
    }

    if (rad7.IsChecked == true)
    {
        cad2 = "Information";
    }
    ...