2011-09-05 205 views
1

所以...我有这段代码在这里,一切都看起来很完美,但是当我尝试运行这个时,它给出了格式化异常处理程序错误。C#需要帮助将字符串转换为Int?

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     if (textBox1.Text != null) 
     { 
      minusTime = Convert.ToInt32(textBox1.Text); // fix this... idk what's even wrong. Just trying to assign user input to minusTime... 
     } 
     else 
     { 
      minusTime = 0; 
     } 
    } 

*注意:textbox1是用户输入的整数值。 minusTime是要分配给用户输入的空整数。

我试着用“Convert.ToInt32(textBox1.Text)”来运行这个,但它仍然给我一个异常,说用户输入了错误的格式......当用户输入显然是一个int。

回答

4

你想

bool result = Int32.TryParse(textBox1.Text, out minusTime); 

如果输入不是整数返回false这将应付。

MSDN page

another overload这需要更多的信息,有关数量的可能的格式:

public static bool TryParse(
    string s, 
    NumberStyles style, 
    IFormatProvider provider, 
    out int result 
    ) 

这将应付货币符号等

+0

谢谢!这工作完美!谢谢你摆脱我的头痛,哈哈! – Shaku

2

尝试使用:

minusTime = Int32.Parse(textBox1.Text); 
+3

此外,将此行更改为'if(!string.IsNullOrEmpty(textBox1.Text))' –

+0

[Int32.TryParse](http://msdn.microsoft.com/en-us/library/f02979c7.aspx)是另一个类似的解决方案 –

+0

谢谢!这也很好!这比我当头一棒... – Shaku

1
private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    var minusTime; 
    if (textBox1.Text != null && int.TryParse(textBox1.Text, out minusTime)) 
    { 
    } 
    else 
    { 
     minusTime = 0; 
    } 
} 
0

您可以使用:

int minusTime=0; 
Int32.TryParse(textBox1.Text, out minusTime); 

如果textBox1.Text不是整数,或者即使它为空,minusTime也将为0。