2013-05-26 132 views
2

我只爲方法創建類,所以我可以在我的項目中一直使用它們。目前我正在嘗試爲文本框驗證做一個方法,但我遇到了一些問題。通過方法驗證TextBox

我使用這個:

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。我究竟做錯了什麼 ?

回答

2

它應該是:

return int.TryParse(textBox[0].Text.Trim(), out value);。你也需要遍歷所有textBox ES

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; 
} 
+0

這個完美的,我想要的。非常感謝您的參與。歡呼;) – Etrit

+0

不客氣@ user2302998 –

2

您正在輸入一個TextBox s的集合,但不會迭代它們。另外,你打電話給ToString就可以了。

更新您的ValidateIntTextBoxes像這樣:

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

    return int.TryParse(textBox.Text, out value); 
} 
+0

好吧,這完美的作品!謝謝 :)。但是如果我想一次驗證多個文本框呢?那我該怎麼辦? – Etrit

+0

對你的問題的其他回答者似乎預料到了這個問題 - 查看他們的答案(儘管可能等一兩分鐘 - 他們瘋狂地編輯:))。 – Gjeltema

+0

是的,我注意到哈哈。謝謝你的時間,歡呼! – Etrit

0

驗證所有文本框

public bool ValidateIntTextBoxes(params TextBox[] textBox) 
{ 
    return textBox.All(t => { 
           int value = 0; 
           return int.TryParse(t.Text, out value); 
          }); 
} 
+0

它仍然一直返回false。 – Etrit