按钮,将if语句简化为for循环

问题描述:

因此,我有一个简单的任务,用于检查按钮文本的值是否为空,如果是,则隐藏按钮。文本框内文本的字符串是(例如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

是或列表。无论哪种方式,你可以遍历所有的按钮,并为每个按钮做同样的事情。 –

你应该在面板

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

虽然目前没有出现任何需要单独的文本变量将它们添加到面板,然后遍历所有的控制。

我建议注册您的按钮的事件处理程序TextChanged - 活动这将是这样的:

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

这种方式,你不必改变你的表格布局。