我正在尝试验证表单控件以查看它们是否为空,并在我的链接中找到了一个有趣的点。
List<string> emptycontrols = new List<string>();
foreach (Control control in Mainform.V_Datafield.Controls)
{
if (control.Text.Contains(null))
{
emptycontrols.Add(control.Name);
}
}
if (emptycontrols.Count > 0)
{
MessageBox.Show("Empty fields detected:", emptycontrols.ToString());
}
上面是我平庸的解决方案,当它运行时,它出现一个控件,即DateTimePicker
控件永远不会是空的,而且非常正确。
最后我的问题是如何从DateTimePicker
循环中排除foreach
控件,以便忽略它但继续检查其他控件?
组框(V_datafield
)包含:
答案 0 :(得分:5)
您可以随时在foreach
循环
if (control is DateTimePicker)
continue;
答案 1 :(得分:3)
您可以像这样使用is
:
foreach (Control control in Mainform.V_Datafield.Controls)
if (!(control is DateTimePicker) && string.IsNullOrEmpty(control.Text))
emptycontrols.Add(control.Name);
或者,实际上,您的循环可以使用LINQ删除,成为:
var emptyControls = Mainform.V_Datafield.Controls
.Cast<Control>()
.Where(control => !(control is DateTimePicker))
.Where(control => string.IsNullOrEmpty(control.Text))
.Select(control => control.Name);
使用两个Where
来保留前一代码的逻辑,但可以使用&&
合并它们。