2012-02-17 83 views
0

我在winforms,c#应用程序的选项卡控件中创建了所有文本框的列表。现在我想要做的是检查列表中的每个文本框并测试以查看该文本框是否为空。如果是我想使用错误提供程序让用户知道它需要填充。这是我现在使用的代码。如何使用文本框控件列表测试文本框为空?

//gathers the controls and adds them to a list on the main form 
public static List<Control> GetControls(Control form, string type) 
    { 
     var controlList = new List<Control>(); 
     foreach (Control childControl in form.Controls) 
     { 
      if (childControl.Name.Contains(type)) 
      { 
       controlList.Add(childControl); 
      } 
      if (childControl.HasChildren) GetControls(form, type); 
     } 
     return controlList; 
    } 


//Created in a class called DataVerification 
public bool IsNotEmpty(string value, out string errorMessage) 
    { 
     errorMessage = ""; 
     if (value.Length == 0) 
     { 
      errorMessage = "This Field Is Required"; 
      return false; 
     } 
     return false; 
    } 


//method that uses the DataVerification class and the error provider 
public void IsNotEmpty() 
    { 
     availableControls = GetControls(this.tabPage1, "Text"); 
     string errorMessage; 
     DataVerification verify = new DataVerification(); 
     foreach (Control c in availableControls) 
     { 
      if (!verify.IsNotEmpty(c.Text, out errorMessage)) 
      { 
       ErrorProvider.SetError(c, errorMessage); 
      } 
     } 
    } 

即使我可以只显示一个消息框,让用户知道哪些文本框是空的就可以了。任何帮助,将不胜感激。提前致谢。

回答

0

,就可以把控制到一个文本框以这种方式:

  TextBox t = (TextBox)c; 

,然后使用t.Text进行验证。

1

方法IsNotEmpty是一个布尔值;总是返回false。

public bool IsNotEmpty(string value, out string errorMessage) 
{ 
    errorMessage = ""; 
    if (value.Length == 0) 
    { 
     errorMessage = "This Field Is Required"; 
     return true; //instead of false 
    } 
    return false; 
} 
0

我完全不明白你的问题是什么...

您可以用什么来测试,如果一个文本框的值是空的是 String.IsNullOrEmpty();

相反的:

if (!verify.IsNotEmpty(c.Text, out errorMessage)) 
      { 
       ErrorProvider.SetError(c, errorMessage); 
      } 

只是这样做:

if (String.IsNullOrEmpty(c.Text)) 
      { 
       ErrorProvider.SetError(c, "This field is required!"); 
      } 

另外,我建议你改变你的命名方案一点点。让方法等成为'真实'的形式是一种很好的做法。因此,而不是IsNotEmpty,IsEmpty将更容易阅读/维护。该行!verify.IsNotEmpty()抛出双重否定!

编辑: 正如ahmad所说:你的方法总是返回false。它应该阅读:

public bool IsNotEmpty(string value, out string errorMessage) 
    { 
     if (value.Length == 0) 
     { 
      errorMessage = "This Field Is Required"; 
      return false; 
     } 
     return true; 
    } 
0

我不知道我理解的问题,但如果你想知道在哪里TextBox控件和验证只这些,你可以做到以下几点:

foreach (Control c in availableControls) 
{ 
    TextBox t = c as TextBox; 
    if (t != null && !verify.IsNotEmpty(t.Text, out errorMessage)) 
     ErrorProvider.SetError(t, errorMessage); 
}