2015-06-08 62 views
0

this question提供了一个检查窗口窗体上的任何文本框是否为空的解决方案。我的问题扩展到:如果文本框是动态创建的,有没有办法告诉哪个文本框是空的并返回控件(文本框)的名字?检查哪个动态创建的文本框为空

请告知是否需要更多信息,谢谢。

编辑:代码:(整个程序太大,我将只添加文本框部分)

 private TextBox Department_Contact = new TextBox(); 
     this.Department_Contact.Location = new System.Drawing.Point(lct1, lct2); 
     this.Department_Contact.Size = new System.Drawing.Size(s1, s2); 
     this.groupBox2.Controls.Add(this.Department_Contact); 

该文本框的负载取决于某些组合框选择;因此,硬编码

if (Department_Contact.Text == string.Empty) 

是不是一个选择。我的代码

编辑:这里是为那些寻找解决方案的完整的答案:

 Department_Contact.name = "Department_Contact"; 
     var txt = View.groupBox2.Controls.OfType<TextBox>().ToArray(); 

     foreach (TextBox t in txt) 
     { 
      if (t.Text == "") 
       Console.WriteLine(t.Name); 
     } 
+0

你能告诉我们你用来创建文本框的代码吗? – Ben

+0

无论是否动态添加,链接问题中的接受答案都可以用于* any *控件。 – poke

+0

@Ben我会添加一些代码。 – Alex

回答

1

你可以做什么,是所有的文本框进入一个数组,然后检查每一个。

var txt = this.groupbox.Controls.OfType<TextBox>().ToArray(); 

foreach (TextBox t in txt) 
{ 
    if (t.Text == "") 
     Console.WriteLine(t.Name); 
} 

View是对表格的参考。如果您在表单本身中执行此代码,则可以使用this代替。

+0

View.Controls返回一个错误,说System.Windows.Forms.View不包含'Controls'的def。我会在Google上查找并通知您 – Alex

+0

@Alex您提到的文本框位于groupbox中?如果是这样,这将工作(我会改变我的代码) – Ben

+0

尝试groupbox作为GroupBox和我的groupbox的名称,这是groupBox2,错误发生在groupbox现在 – Alex