按钮,将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;
}
答
你应该在面板
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);
}
这种方式,你不必改变你的表格布局。
这听起来像你不应该有很多单独的变量,但应该有一个集合... –
你是什么意思?像一个数组? – Manitha
是或列表。无论哪种方式,你可以遍历所有的按钮,并为每个按钮做同样的事情。 –