正在查找哪个文本框为空

本文关键字:文本 查找 | 更新日期: 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
}