如何检查是否选中了多个复选框

时间:2017-02-22 11:57:58

标签: c# wpf checkbox

所以在我的程序中,我有三个checbox(A,B和C)。我想将选中的复选框的内容保存到文本文件中。我正在使用if语句执行此操作,如下所示:

if (a.IsChecked == true)
{
    res = a.Content.ToString() + " is checked"; 
}
else if (b.IsChecked == true)
{
    res = b.Content.ToString() + " is checked";
}
else if (c.IsChecked == true)
{
    res = c.Content.ToString() + " is checked";
}

这是我将上述值保存到字符串然后在我的代码中保存到文本文件的位置

string test = res;

现在这对我有用。所以我决定尝试检查是否正在检查多个复选框。所以添加了以下if语句:

else if ((a.IsChecked == true) && (b.IsChecked == true) && (c.IsChecked == true))
{
    res= a.Content.ToString() + " " + b.Content.ToString() + " " + c.Content.ToString()
}

但这不适合我,因为最后res在文本文件中打印为而不是b c。知道我做错了什么吗?

另请注意,我已将代码顶部的res初始化为字符串:

string res;

我运行代码时没有收到任何错误,所以我不确定我的错误在哪里。对此的任何帮助都非常感激。

非常感谢:)

2 个答案:

答案 0 :(得分:0)

您可以这样实现:

string res = "";
if (a.IsChecked)
{
    res += a.Content.ToString(); 
}
if (b.IsChecked)
{
    res += b.Content.ToString();
}
if (c.IsChecked)
{
    res += c.Content.ToString();
}

或简单

string res = $"{(a.IsChecked?a.Content+" ":"")}{(b.IsChecked?b.Content+" ":"")}{(c.IsChecked?c.Content:"")}";

答案 1 :(得分:0)

在这些情况下使用StringBuilder是一种很好的做法。 另一方面,如果每个CheckBox都有一行,则可以使用以下命令:

 StringBuilder sb = new StringBuilder();
 checkappend(ref sb, a);
 checkappend(ref sb, b);
 checkappend(ref sb, c);
 string res = sb.ToString();

其中

static void checkappend(ref StringBuilder sb, CheckBox ck)
{
    sb.Append(ck.Content.ToString());
    sb.Append(ck.IsChecked == true ?  "is checked." : " is NOT checked.");
    sb.Append(Environment.NewLine);
}

请注意,当List中有许多CheckBox时,创建单独的类可以帮助您。你可以简单地使用

   foreach (var ck in listOfCheckBoxes)
       checkappend(ref ck, c);