将字符串转换为Int C#

时间:2013-05-14 07:09:55

标签: c#

我正在尝试将输入的字符串转换为int。我尝试过 int.parse int.parse32 ,但是当我按下“回车”时,我收到以下错误:

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);

partial class Form1:Form:

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

4 个答案:

答案 0 :(得分:4)

检查string.IsNullOrEmpty()的字符串,不要尝试解析这些字符串。

答案 1 :(得分:4)

字符串是不可变的,因此当您将currentID分配给文本框时,该文本的任何更改都不会反映在变量currentID

this.orderID.Text = currentID;

您需要在EnterKey函数中执行的操作是直接使用Textbox值:

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

答案 2 :(得分:1)

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

int intResult = 0;

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

答案 3 :(得分:0)

试用此代码

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