查找哪个文本框为空

时间:2014-09-12 19:24:56

标签: 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);
}

3 个答案:

答案 0 :(得分:6)

使用foreach的方法看起来很有希望。你怎么能使用LINQ

if(this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text)) {
    ...
}

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

要获取对空文本框的引用,您使用与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
}