浓缩两个字符串并将其打印在标签c#wpf上
我有几个浓缩两个字符串并将其打印在标签c#wpf上,c#,wpf,C#,Wpf,我有几个单选按钮存储在两个不同的字符串中。 我需要把它们印在标签上装订在一起。我怎么做 private void Button_Click(object sender, RoutedEventArgs e) { String cad1 = null; String cad2 = null; if (rad1.IsChecked == true) { cad1 = "Ok";
单选按钮
存储在两个不同的字符串中。
我需要把它们印在标签上装订在一起。我怎么做
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;
}
}
在if-else链中,您从未为cad1和cad2设置值,因此无法获得正确的输出 要想得到你想要的东西,最简单的方法就是把链子分开,让它看起来像这样
...
else if (rad6.IsChecked == true)
{
cad1 = "Abort Retry Cancel";
}
if (rad7.IsChecked == true)
{
cad2 = "Information";
}
...
原因是所有cad2变量都包含在else if语句中 修改行
else if (rad7.IsChecked == true)
将来
if (rad7.IsChecked == true)
编辑我还建议删除所有
==true
,它们是不必要的。
如果此事件后未使用cad1
和cad2
,我建议创建一个字符串变量,并将cad1
和cad2
的值附加到该变量上
var cont = "";
if (rad1.IsChecked) cont += "Ok";
...
if (rad7.IsChecked) cad2 += "Information";
...
lab2.Content = cont;
Elsif仅在第一个if为非真时计算,因此如果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是否是单选按钮,为什么我不能从名称中看出哪些属于同一组。我希望1-6在一组中,7-10在另一组中,但更好的命名可以避免混淆和可能的错误…从来没有一种情况下您同时为
cad1
和cad2
赋予值。从来没有。在胡乱猜测发生了什么之前,请始终设置断点并使用调试器检查变量的值。显然,在您的情况下,cad2为null。我使用@Tubs answer尝试过它,它对我来说非常有效,但它是真的,如果我将两个变量初始化为null,我可能会遇到问题。Thaks you:)你说得对,但我正在学习,这是我的第三个练习。我已经上课两周了。三元运算符似乎很难从:D开始