2017-02-22 14 views
0

私のプログラムでは、私は3つの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() 
} 

をしかし、最終解像度ではなく、B cとしてテキストファイルに印刷されているので、これは私と一緒に働いていません。どのようなアイデアを私は間違っていますか?

はまた、私はすでに文字列として私のコードの先頭に解像度を初期化していることに注意してください。

string res; 

を私は自分のコードを実行したときに、私はすべてのエラーを取得しておりませんので、私は私のミスがどこにあるかわかりません。これに関する助けがあれば、非常に感謝しています。

おかげでたくさん:)

+0

(&&((a.IsChecked == true)の場合(b.IsChecked ==真)&& c.IsCheckedは==真)) 条件が満たされなかった場合は「res」はnullになります – 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を使用することをお勧め。 各チェックボックスに1つの行を持つことがOKであれば一方で、あなたは以下を使用することができます。

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''と似ていますが、パフォーマンスが向上します。 [this](http://stackoverflow.com/questions/3069416/difference-between-string-and-stringbuilder-in-c-sharp)または[this](http://stackoverflow.com/questions/73883/)を参照してください。 string-vs-stringbuilder)。 – Ron

0

それはチェックする複数の組み合わせです。最初のコードスニペットからelseを削除するだけで、すべてのチェックを1つずつ実行します。あなたは最後に成功した小切手からの報告のみを得て、は何とかに蓄積しなければなりません(リストに追加、複数行の文字列で結合するなど)。ここで

は(LINQを使用して)簡単なワンライナーです:

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

ありがとうございました! :) –

関連する問題