2

我只为方法创建一个类,所以我可以在我的项目中一直使用它们。目前我正在尝试制作一种用于文本框验证的方法,但我遇到了一些问题。

我正在使用这个:

public bool ValidateIntTextBoxes(params TextBox[] textBox)
{
    int value = 0;

    return int.TryParse(textBox.ToString(), out value);
}

我正在像这样使用它:

public bool IsValid()
{
    return ValidateIntTextBoxes(AgeTextBox);
}

private void OKButton_Click(object sender, EventArgs e)
{
    //This if statement is just to test the mothod
    if(IsValid())
    {
        MessageBox.Show("Success");
    }

    else
    {
        AgeTextBox.BackColor = Color.Red;
    }

}

问题是 IsValid() 方法总是返回 false。我究竟做错了什么 ?

4

3 回答 3

2

您正在输入TextBoxs 的集合,但没有迭代它们。另外,您正在调用ToString它。

像这样更新你的ValidateIntTextBoxes

public bool ValidateIntTextBoxes(TextBox textBox)
{
    int value = 0;

    return int.TryParse(textBox.Text, out value);
}
于 2013-05-26T15:38:36.253 回答
2

它应该是 :

return int.TryParse(textBox[0].Text.Trim(), out value);. 你还需要遍历所有的textBoxes

public bool ValidateIntTextBoxes(params TextBox[] textBox)
{
   bool valid = true;
   int value;
   foreach(var t in textBox){
     if((int.TryParse(t.Text.Trim(), out value) == false) {
        return false;
    }
  }
  return valid;
}
于 2013-05-26T15:40:20.290 回答
0

验证所有文本框

public bool ValidateIntTextBoxes(params TextBox[] textBox)
{
    return textBox.All(t => { 
                              int value = 0; 
                              return int.TryParse(t.Text, out value); 
                            });
}
于 2013-05-26T15:43:10.437 回答