我有几个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;
}
}
答案 0 :(得分:2)
原因是你的所有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;
答案 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";
}
...