正在查找哪个文本框为空
本文关键字:文本 查找 | 更新日期: 2023-09-27 18:21:38
我有一个短窗口程序,用来快速添加信息。但现在我正在努力增强它。正在寻找更有效的方法。想要检查空文本框,如果该框为空,则查找它是哪一个,并将焦点设置回仅该框。目前,我循环浏览所有这些框,并检查是否有任何框是空的,如果它只是显示一条消息。但必须查看哪个框缺少文本。这是代码:
bool txtCompleted = true;
string errorMessage = "One or more items were missing from the form";
foreach(Control c in Controls)
{
if (c is TextBox)
{
if (String.IsNullOrEmpty(c.Text))
{
txtCompleted = false;
}
}
}
if (txtCompleted == false)
{
MessageBox.Show(errorMessage);
}
你使用foreach
的方法对我来说很有希望。但是你也可以使用LINQ和
if(this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text)) {
...
}
可以使用focus()
方法将焦点设置为空文本框。
在循环中将焦点设置在控件上,然后在完成时中断。
foreach(Control c in Controls)
{
if (c is TextBox)
{
if (String.IsNullOrEmpty(c.Text))
{
txtCompleted = false;
c.Focus();
MessageBox.Show(errorMessage);
break;
}
}
}
要获得对空文本框的引用,您使用与R.T.提供的解决方案几乎相同的解决方案,但使用FirstOrDefault
:
var emptyTextBox = Controls.OfType<TextBox>().FirstOrDefault(t => string.IsNullOrEmpty(t.Text)
if (emptyTextBox != null)
{
// there is a textbox that has no Text set
// set focus, present error message etc. on emptyTextBox
}