2013-01-22 50 views
3

添加數字我有這樣的代碼,它的作品只有當所有的文本框中包含的值。但如果一個文本框爲空,我得到一個錯誤..在文本框

Int32 Total = Int32.Parse((txtChild1.Text)) 
      + Int32.Parse(txtChild2.Text) 
      + Int32.Parse(txtChild3.Text) 
      + Int32.Parse(txtWife1.Text) 
      + Int32.Parse(txtWife2.Text) 
      + Int32.Parse(txtWife3.Text); 

我知道,它必須是一個函數像IsNull,但整數值.. 有誰知道它是什麼?

回答

2

您可以使用Int32.TryParse

Int32 int1 = 0; 
Int32.TryParse(txtChild1.Text, out int1); 
//.... more int declarations 
Int32 total = int1 + int2 + int3; //etc. etc. 

TryParse將試圖分析文本,如果失敗,將變量設置爲0。

您也可以內嵌一些邏輯的(雖然這使得代碼很長,凌亂):

Int32 Total = (txtChild1.Text.Length == 0 ? 0 : Int32.TryParse(txtChild1.Text)) + (txtChild2.Text.Length == 0 ? 0 : Int32.TryParse(txtChild2.Text)); //etc. etc. 

Int32.TryParse參考:http://msdn.microsoft.com/en-us/library/f02979c7.aspx

如果速記參考:http://msdn.microsoft.com/en-gb/library/ty67wk28(v=vs.110).aspx

+0

是的..謝謝你.. – Nejthe

+0

沒問題,布拉德打敗了我,他的回答是更好的=] – Sean

+0

hehe ..希望如果我能設置兩個接受的答案 – Nejthe

8

您正在尋找Int32.TryParse

Int32 val; 
if (Int32.TryParse(txtChild1.Text, out val)){ 
    // val is a valid integer. 
} 

,你在每一個.Text物業打電話,然後把它們加起來。您還可以擴展,使其更容易(如果您選擇):

public static class NumericParsingExtender 
{ 
    public static Int32 ToInt32(this String input, Int32 defaultValue = 0) 
    { 
     if (String.IsNullOrEmpty(input)) return defaultValue; 
     Int32 val; 
     return Int32.TryParse(input, out val) ? val : defaultValue; 
    } 
} 

然後,在實踐中:

Int32 total = txtChild1.Text.ToInt32() + txtChild2.Text.ToInt32() 
      + txtChild3.Text.ToInt32() + /* ... */; 

,當然,an example

+0

+1擴展方法。 –

+0

這真的有幫助..謝謝你 – Nejthe

+0

@Nejthe:你非常歡迎。 –

1

您無法解析空字符串「」。在解析之前檢查該框是否包含任何內容。

Textbox.text != "" 

其他答案更快使用tryparse其實是最好的,因爲它在少量代碼行中也是如此!

+1

一個空字符串不是'null' – Sean

+0

ofc正確;)對不起,直到修復我的描述 – 8bitcat

1

Int32值類型。它不能是null。或者當然有nullable types但是嘿..

Int32.Tryparse()方法嘗試。

將數字的字符串表示形式轉換爲其32位有符號整數等效的 。返回值指示操作 是否成功。

Int32.TryParse(txtChild1.Text, out val) 

返回booleantrue如果s成功轉換;否則,false

+0

謝謝你的解釋 – Nejthe