C# 如果没有对每个文本框进行唯一测试,我如何检查多个文本框是否为null或空?
我在表单上有大约20个文本字段,用户可以填写。我想提醒用户,如果他们输入任何文本框中的任何东西,请考虑保存。目前,这方面的测试非常漫长和混乱:C# 如果没有对每个文本框进行唯一测试,我如何检查多个文本框是否为null或空?,c#,arrays,testing,text,isnullorempty,C#,Arrays,Testing,Text,Isnullorempty,我在表单上有大约20个文本字段,用户可以填写。我想提醒用户,如果他们输入任何文本框中的任何东西,请考虑保存。目前,这方面的测试非常漫长和混乱: if(string.IsNullOrEmpty(txtbxAfterPic.Text) || string.IsNullOrEmpty(txtbxBeforePic.Text) || string.IsNullOrEmpty(splitContainer1.Panel2) ||...//many more tests 是否有一种
if(string.IsNullOrEmpty(txtbxAfterPic.Text) || string.IsNullOrEmpty(txtbxBeforePic.Text) ||
string.IsNullOrEmpty(splitContainer1.Panel2) ||...//many more tests
是否有一种方法可以使用任意数组之类的东西,其中数组由文本框组成,并以这种方式进行检查?还有什么其他方法可以非常方便地查看自程序启动以来是否进行了任何更改
还有一件事我应该提到的是有一个日期时间选择器。我不知道是否需要对此进行测试,因为datetimepicker永远不会为null或空
编辑:
我把答案整合到我的程序中,但我似乎无法使它正常工作。
我设置了如下测试,并不断触发Application.Exit()调用
//它开始时说一切都是空的
bool allfieldsempty=true;
foreach(此.Controls中的控件c)
{
//检查它是否是文本框,如果是,它是空的还是空的
if(this.Controls.OfType().Any(t=>string.IsNullOrEmpty(t.Text)))
{
//这意味着soemthing在一个盒子里
allfieldsempty=false;
打破
}
}
如果(allfieldsempty==false)
{
MessageBox.Show(“考虑保存”);
}
否则//这意味着表单中没有新内容,因此我们可以关闭它
{
Application.Exit();
}
为什么根据上面的代码在我的文本框中找不到任何文本?当然--通过控件枚举以查找文本框:
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
TextBox textBox = c as TextBox;
if (textBox.Text == string.Empty)
{
// Text box is empty.
// You COULD store information about this textbox is it's tag.
}
}
}
以George的答案为基础,但使用一些方便的LINQ方法:
if(this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text)))
{
//Your textbox is empty
}
if(this.Controls.OfType().Any(t=>string.IsNullOrEmpty(t.Text)))
{
//你的文本框是空的
}
旁注:标准的开箱即用TextBox控件永远不会在其文本属性中返回空值。不过LINQ的使用很好+1您的答案更好,因为它只会抛出一次消息框。”Foreach语句将多次抛出MessgeBox.Show(“请输入所有信息”)。
if(this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text)))
{
//Your textbox is empty
}