2016-10-19 4 views
0

C#でWPFアプリケーションを構築する 5つのチェックボックスがあり、1つ以上選択されている場合は、itステートメントの引数を動的に変更します。 たとえば、月、火、水、木は&金曜日のチェックボックスがあります。 ユーザーがMon、Wed、& Friを選択した場合、それを反映するためにifステートメントの引数が必要です。 私は数多くの異なるif文を作りたくありません。 は、ここで私が書いたサンプルですが、これは単にあなたが希望としてばかな質問Arugmentの場合

+1

あなたはswitchステートメントをしたいですか? – Will

+0

if文で十分です。 + =演算子を使用して文字列を作成します。 'passArg + =" Thu "'と 'passArg + =" Fri "'などのように –

+1

@ M.kazemAkhgaryとチェックを外すとどうしますか?文字列の連結を解除するだけではできません。 – TKharaishvili

答えて

0

されていない場合は、if文は明らかに

string passArg = ""; 

     if(check_mon.IsChecked == true) 
     { 
      passArg = "passArg == \"Mon\""; 
     } 

     if(passArg) 
     { 
      MessageBox.Show("RAN"); 
     } 

申し訳ありませんが間違っています。 コードを動的に生成できますが、この場合は過剰です。必要なのは次のとおりです。

bool isChecked = false; 

if(check_mon.IsChecked && passArg == "Mon") 
{ 
    isChecked = true; 
} 
... 

if(isChecked) 
{ 
    MessageBox.Show("RAN"); 
} 

私は、多くの場合は別の文を作成する必要はありません。

さて、あなたは、ループ内のチェックボックスを入れTag他のいくつかのプロパティまたはを設定し、そのpasArgと比較けど、は、最初に焦点を当てる作品最も簡単な溶液で行く傾向がある可能性がありそれをより良くとする。 7 if文がうまく動作するようになると、賢明な解決法(後で理解できないことがあります)を思いつくために、より多くの時間を費やすことがあります。

+0

しかし、私は5日間の異なる日を持っています。ユーザーは任意のコンボを選択できます。これは、すべての単一のコンボを予測するために数多くの異なるif文を必要とします。 –

+0

@DhavalDesaiあなたの例は、 'passArg'で1日しか表示されません。あなたが何日かの組み合わせと比較する必要がある場合は、その場合に 'passArg'が何であるかを示します。いずれの場合でも、別々の 'if'ステートメントで「すべての組み合わせ」をチェックする必要はありません。 –

1

あなたは、リスト内の値をチェックすることができます:チェックボックスがCheckedまたはUncheckedであり、この方法では、あなたが自分のものを設定したり、設定を解除することができたときに

List<string> checked = new List<string>() 

if (check_mon.IsChecked) 
{ 
    checked.Add("Mon"); 
} 

if (checked.Contains(passArg)) 
{ 
    MessageBox.Show("RAN"); 
} 
2

あなたは、イベントを発生することができます。あなたのXAML形式の例
:その後、

<CheckBox Checked="Checked" Unchecked="UnChecked"/> 

とイベントを作成します。

private void UnChecked(object sender, RoutedEventArgs e) { 
    //Checked, enable, disable or do whatever you want 
} 
private void Checked(object sender, RoutedEventArgs e) { 
    //Checked, enable, disable or do whatever you want 
}