2016-12-15 58 views
2

因此,我有一個簡單的任務,用於檢查按鈕文本的值是否爲空,如果是,則隱藏按鈕。文本框內文本的字符串是(例如Time_A_)(設置爲按鈕之後),並且相應的按鈕名稱相同減去下劃線(例如Time_A)。我想要做的就是簡化這段代碼,使用類似for循環而不是12條if語句。按鈕,將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); 
} 

這種方式,你不必改變你的表格佈局。