我正在尝试将输入的字符串转换为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;
}
}
答案 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);
}