2016-12-15 3 views
2

ボタンのテキストの値が空白であるかどうかをチェックし、それがボタンを非表示にするかどうかを調べる簡単なタスクがあります。テキストボックス内のテキストの文字列は(例えばTime_A_)(後のボタンに設定)であり、対応するボタン名は同じものから下線を引いたもの(例えばTime_A)である。私がしたいのは、このコードを単純化して、12のif文の代わりにforループのようなものを使用することです。if文をforループに単純化する

if (Time_A_ == "") 
{ 
    Time_A.Visibility = Visibility.Hidden; 
} 
if (Time_B_ == "") 
{ 
    Time_B.Visibility = Visibility.Hidden; 
} 
if (Time_C_ == "") 
{ 
    Time_C.Visibility = Visibility.Hidden; 
} 
if (Time_D_ == "") 
{ 
    Time_D.Visibility = Visibility.Hidden; 
} 
if (Location_A_ == "") 
{ 
    Location_A.Visibility = Visibility.Hidden; 
} 
if (Location_B_ == "") 
{ 
    Location_B.Visibility = Visibility.Hidden; 
} 
if (Location_C_ == "") 
{ 
    Location_C.Visibility = Visibility.Hidden; 
} 
if (Location_D_ == "") 
{ 
    Location_D.Visibility = Visibility.Hidden; 
} 
if (Date_A_ == "") 
{ 
    Date_A.Visibility = Visibility.Hidden; 
} 
if (Date_B_ == "") 
{ 
    Date_B.Visibility = Visibility.Hidden; 
} 
if (Date_C_ == "") 
{ 
    Date_C.Visibility = Visibility.Hidden; 
} 
if (Date_D_ == "") 
{ 
    Date_D.Visibility = Visibility.Hidden; 
} 
+6

別々の変数をたくさん持たないほうがいいと思いますが、代わりにコレクションが必要です。 –

+0

どういう意味ですか?アレイのような? – Manitha

+0

はい、またはリストです。いずれにしても、すべてのボタンを反復して、それぞれに同じことを行うことができます。 –

答えて

5

あなたは

foreach(var control in this.panelName.Controls.Where(ctrl => string.IsNullOrEmpty(ctrl.Text)) 
    control.Visibility = Visibility.Hidden; 

をパネルに追加して、パネル内のすべてのコントロールをループする必要があり、別のテキスト変数の必要があるように表示されません。

0

私は次のようになり、あなたのボタンをTextChanged - イベントのイベントハンドラを登録することをお勧め:あなたは、フォームのレイアウトを変更する必要はありません

private void button1_TextChanged(object sender, EventArgs e) 
{ 
    var button = sender as Button; 
    button.Visible = (button.Text != String.Empty); 
} 

この方法です。

関連する問題