2017-02-22 99 views
0

因此,在我的程序中,我有三个checboxes(A,B和C)。我想将复选框的内容保存到文本文件中。其中,我在我后面的代码保存上述值的字符串,然后到一个文本文件如何检查是否检查多个复选框

string test = res; 

现在这个

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"; 
} 

,这里是:用我这样做,如果如下语句正在为我工​​作。所以我决定尝试检查多个复选框是否被检查。因此,添加以下if语句:

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

但这不是我的工作,因为最终RES文本文件打印的,而不是A B C。任何想法我做错了什么?

同时请注意,我已经在我的代码的顶部,字符串初始化RES:

string res; 

当我运行我的代码,我没有得到任何错误,所以我不知道在哪里我的错误是。任何帮助,这是非常感谢。

感谢很多:)

+0

否则,如果((a.IsChecked ==真)&&(b.IsChecked ==真)&&(c.IsChecked ==真)) 如果任何条件失败,'res'将为空 – Ragavan

回答

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:"")}"; 
+0

正是我在找的东西!非常感谢:) –

0

它的一个很好的做法是使用在这些情况下StringBuilder。 在另一方面,如果它是确定对每个复选框一条线,你可以使用以下命令:

其中
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); 
} 

注意,创建一个单独的类可以帮助你的时候列表中有许多复选框。你可以简单地使用

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

非常感谢您的回答,但您能向我解释什么是stringbuilder吗? :) –

+0

然而,类似于“string”的东西会提高性能。看到[这](http://stackoverflow.com/questions/3069416/difference-between-string-and-stringbuilder-in-c-sharp)或[this](http://stackoverflow.com/questions/73883/字符串VS-的StringBuilder)。 – Ron

0

这是多个组合来检查。只需从第一个代码片段中删除else即可逐个运行所有检查。你只会得到最后一次成功的检查报告,有几个报告你必须积累他们以某种方式(添加到列表中,结合在多行字符串等)。

下面是一个简单的一行(使用LINQ):

var result = string.Join(" and ", new[] { a, b, c }.Where(o => o.IsChecked).Select(o => $"{o.Content} is checked")); 
+0

非常感谢! :) –