我使用短的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);
}
答案 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
}