2012-07-25 72 views
2

我遇到了檢查文本框並確保其中只有整數的問題。只允許文本框中的整數

到目前爲止我能確認有一個在文本框中的文本,但檢查如果他們整數無法正常工作。這是我迄今爲止的代碼。

if (textBox1.Text.Length == 0) 
{ 
    errorProvider1.SetError(textBox1, "need Cost of Disks"); 
    return; 
} 
if (textBox2.Text.Length == 0) 
{ 
    errorProvider2.SetError(textBox2, "need Total disks in package"); 
    return; 
} 
if (textBox3.Text.Length == 0) 
{ 
    errorProvider3.SetError(textBox3, "need the Gigabyte per disk"); 
    return; 
} 
try 
{ 
    Double[] myValues = new Double[3]; 
    myValues[0] = Double.Parse(textBox1.Text); 
    myValues[1] = Double.Parse(textBox2.Text); 
    myValues[2] = Double.Parse(textBox3.Text); 

    Double ppd = myValues[0]/myValues[1]/myValues[2]; 

    ppd = Math.Round(ppd, 3, MidpointRounding.AwayFromZero); 

    label4.Text = ppd.ToString(); 
} 
catch (FormatException) 
{ 
    //errorProvider1.SetError(label4, "testing1"); 

    //errorProvider2.SetError(label4, "testing2"); 

    //errorProvider3.SetError(label4, "testing3"); 
    return; 
} 
+1

我會推薦使用正則表達式。 http://www.codeproject.com/Articles/93804/Using-Regular-Expressions-in-C-NET – Spacemancraig 2012-07-25 18:31:14

回答

2

使用當前的格局,這樣的事情:

int tester; 
if (!Int32.TryParse(textBox1.Text, out tester)) 
{ 
    errorProvider1.SetError(textBox1, "must be integer"); 
    return; 
} 
+0

感謝您的幫助。不得不將int更改爲double,但它在後面工作。 – 2012-07-25 19:03:13

0

覆蓋在窗體的文本框的Validating事件,然後你可以做內容的TryParse

public void textBox1_Validating(...) 
{ 
    // TryParse 
} 
0

可以使用int.TryParse方法來檢查字符串是否是一個整數:

int n = 0; 
bool isNumber = int.TryParse(textBox1.Text, out n); 

if (!isNumber) 
    return; 
0

如果您不希望允許除了數字任何東西到編輯框中,勾入鍵盤事件,檢查不是數字和字符取消他們出去了。

當你理清需要在一個文本框什麼活動,只是在重複別人同樣的事件,因爲你不必四處複製的事件。

-1

如果你開始使用Ajax工具包,留作記錄

<ajaxToolkit:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" TargetControlID="FUND_CD" FilterType="Custom" ValidChars="1234567890" runat="server"> 
         </ajaxToolkit:FilteredTextBoxExtender> 
+0

這與問題有什麼關係? – 2012-07-25 20:46:34

+0

由於某些原因,該帖子的其餘部分不顯示,我包括一個代碼。 – KKP 2012-07-25 21:54:50

+0

好的,我沒有意識到你的帖子中有更多。但是,如果你仔細觀察這個問題,那就是關於WinForms,而不是ASP.net,所以這對於這個問題不會有什麼幫助。 – 2012-07-25 22:00:11

0
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e) 
{ 
    // Filter out non-digit text input 
    foreach (char c in e.Text) 
    if (!Char.IsDigit(c)) 
    { 
     e.Handled = true; 
     break; 
    } 
} 

現在,這很好地工作!

+1

問題在於WinForms。 – LarsTech 2013-06-18 21:11:01

相關問題