2017-02-22 135 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

非常感謝! :) –