我有一个关于windows窗体上有30个文本框的问题。我正在测试应用程序。
所有文本框都有验证事件,用于输入,按键和离开事件。
但问题是当打开页面并直接按下按钮时,它会保存文本框而没有警告。
如何处理所有文本框为空的情况,而不检查每个文本框条件像
if(String.isNotNullorEpty(textbox1.Text)&&...)
谢谢。
您可以简单地遍历所有文本框控件并检查其中是否有文本。如果30个中只有1个有文本,则条件为假。
bool allEmpty = true;
foreach (Control c in Controls)
{
if(c is TextBox tb && !String.IsNullOrEmpty(tb.Text))
{
allEmpty = false;
break;
}
}
使用linq:
bool allEmpty = parentControl.Controls.OfType<TextBox>().All(tb => tb.Text == "");
设置你的'parentControl'。
不需要选中所有的文本框或任何其他循环。
保持您的save changes button
禁用。您已经为每个文本框都设置了事件,只需添加此事件以在文本更改时启用save changes button
。这样就不可能在窗体打开后立即保存更改
此方法的另一个优点是,当用户关闭表单时,您可以检查是否有任何未保存的更改,并询问他是否要在关闭之前保存它们。