2010-02-26 21 views
1

到INT32我有下面的代碼做一些很簡單的驗證一個TextBox不能轉換零從文本框

if(txtInStock.Text.Length == 0) 
     txtInStock.Text = Convert.ToString(0); 

    if (txtInStock.Text.Length == 0) 
     txtOnOrder.Text = Convert.ToString(0); 

    int inStockAmt = Convert.ToInt32(txtInStock.Text); 
    int onOrderAmt = Convert.ToInt32(txtOnOrder.Text); 

能正常工作時發短信!= 0,但在文字== 0,我收到了FormatException說該字符串的格式不正確。我該如何解決這個問題?

回答

4

你的問題是在這裏:

if (txtInStock.Text.Length == 0) 
    txtOnOrder.Text = Convert.ToString(0); 

你正在檢查一個文本框的長度和設置的另一個文本。它改成這樣:

if (txtOnOrder.Text.Length == 0) 
    txtOnOrder.Text = Convert.ToString(0); 

此外,有沒有你正在使用Convert.ToString(0),而不是僅僅"0"理由嗎?我不特別推薦使用這種方法進行數據驗證,但是這應該可以解決問題。

1

這段代碼會這樣嗎?

 
    if(txtInStock.Text.Length == 0) 
     txtInStock.Text = "0"; 

    if (txtInStock.Text.Length == 0) 
     txtOnOrder.Text = "0"; 

    int inStockAmt = Convert.ToInt32(txtInStock.Text); 
    int onOrderAmt = Convert.ToInt32(txtOnOrder.Text); 

希望這有助於 最好的問候, 湯姆。

+0

順便說一句,不需要兩個條件,因爲他們正在檢查相同的條件。 – 2010-02-26 18:17:33

0

int inStockAmt = Convert.ToInt32(string.IsNullOrEmpty(txtInStock.Text)?0:int.Parse(txtInStock.Text));

1

這是一個簡單的方法來處理一個空的文本框

if(string.IsNullOrEmpty(txtInStock.Text)) 
    txtInStock.Text = "0"; 

if(string.IsNullOrEmpty(txtOnOrder.Text)) 
    txtOnOrder.Text = "0"; 

int inStockAmt = Convert.ToInt32(txtInStock.Text); 
int onOrderAmt = Convert.ToInt32(txtOnOrder.Text); 

我還要保存文本框的值來臨時變量,然後做comparisions除非如果你想在文本框中強制0它是當空。

2

由於您不能確定您的文本框的用戶是否會寫入正確的整數,我建議使用Int32.TryParse()而不是Convert.ToInt32。因此,您將能夠輕鬆處理錯誤情況。