2013-05-14 240 views
1

我想將輸入的字符串轉換爲int。我曾嘗試int.parse,並int.parse32但是當我按 「回車」 我得到以下錯誤:將字符串轉換爲整數C#

System.FormatException: Input string was not in a correct format. 
    at System.Number.StringToNumber(String str, NumberStyles options, 
            NumberBuffer & number...." 

部分Form1類:

this.orderID.Text = currentID; 
this.orderID.KeyPress += new KeyPressEventHandler(EnterKey); 

部分Form1類:形式:

public int newCurrentID; 
    private void EnterKey(object o, KeyPressEventArgs e) 
    { 
     if(e.KeyChar == (char)Keys.Enter) 
     { 
      try 
      { 
       newCurrentID = int.Parse(currentID); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.ToString()); 
      } 
      e.Handled = true; 
     } 
    } 
+8

把一個破發點,以法'EnterKey',看看'currentID'包含。 – I4V 2013-05-14 07:11:09

+2

currentID是什麼類型,它的內容是什麼? – 2013-05-14 07:12:04

+0

當你解析它時你在currentID裏面找到了什麼 – tariq 2013-05-14 07:14:29

回答

4

字符串是不可改變的,所以當你分配currentID到文本框的文本的任何更改將不會反映在可變currentID

this.orderID.Text = currentID; 

需要在EnterKey功能做的是用直接的文本框的值:

private void EnterKey(object o, KeyPressEventArgs e) 
{ 
     if(e.KeyChar == (char)Keys.Enter) 
     { 
      if(!int.TryParse(orderID.Text, out newCurrentID)) 
       MessageBox.Show("Not a number"); 
      e.Handled = true; 
     } 
} 
+0

謝謝,這幫助了我很多,並教我一個新的東西以及。 :) – 2013-05-14 07:30:55

+0

@AlexMoreno很高興我能幫到你。 – Magnus 2013-05-14 07:31:29

4

檢查字符串string.IsNullOrEmpty()並且不要試圖解析這樣的字符串。

+2

我想提及更新的'string.IsNullOrWhitespace()'方法(自C#4.0以來),爲用戶做了一些額外的檢查:)。 – Destrictor 2013-05-14 07:35:40

+0

好消息,謝謝。 – Hikiko 2013-05-14 07:43:30

1

使用TryParse,而不是直接將值解析:

int intResult = 0; 

if (Int32.TryParse(yourString, out intResult) == true) 
{ 
    // do whatever you want... 
} 
0

試試這個代碼

if (!string.IsNullOrEmpty(currentID)){ 
    newCurrentID = int.Parse(currentID); 
} 
+0

你有更好的選擇使用TryParse .... – 2013-05-14 07:17:22

+0

同意您的意見謝謝 – 2013-05-14 07:17:58