以下是涉及的事件处理程序的代码:
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
seed = Convert.ToInt32(this.Text);
}
catch (FormatException)
{
MessageBox.Show("Input string is not a sequence of digits.");
}
catch (OverflowException)
{
MessageBox.Show("The number cannot fit in an Int32.");
}
}
它应该确保用户不会在文本框中键入除Int32
允许的数字之外的任何内容,但是每次尝试在框中键入ANYTHING时都会执行第一个catch语句。我环顾四周,但似乎无法弄明白为什么......
答案 0 :(得分:5)
可能是因为this.Text
没有从输入框中读取,而是定义了处理程序的类。
我相信你想要的是:
try
{
seed = Convert.ToInt32(((TextBox)caller).Text);
}
答案 1 :(得分:0)
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
seed = Convert.ToInt32(textBox1.text);
}
catch (FormatException)
{
MessageBox.Show("Input string is not a sequence of digits.");
}
catch (OverflowException)
{
MessageBox.Show("The number cannot fit in an Int32.");
}
}
请使用上述声明,它应该正常工作。如果输入数字,则不会执行第一个异常。
答案 2 :(得分:0)
使用以下内容(暂时当然)来查看错误消息可能会有所帮助:
catch (FormatException exception)
{
MessageBox.Show("Input string is not a sequence of digits."
+ "Exception message was: " + exception.getMessage());
}