查找哪个文本框为空

Tro*_*ant 5 c# windows-forms-designer

我有一个简短的Windows程序,我用它来快速添加信息.但现在我正在尝试增强它.正在寻找一个更有效的想要检查空文本框,如果该框是空的,找到它是哪一个,并将焦点设置回只有那个框.目前我循环遍历所有这些并检查是否有任何框是空的,如果它只是显示一条消息.但是必须要查看哪个框缺少文本.下面是代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

Rah*_*thi 6

你使用的方法foreach看起来很有希望.你也可以使用LINQ

if(this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

您可以使用该focus()方法将焦点设置为空文本框.


Jef*_*der 2

在循环中将焦点设置在控件上,然后在完成后中断。

    foreach(Control c in Controls)
    {
        if (c is TextBox) 
        {
            if (String.IsNullOrEmpty(c.Text))
            {
                txtCompleted = false; 
                c.Focus();  
                MessageBox.Show(errorMessage);
                break;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)