简单的C#Windows应用程序-Catch语句无论发生什么都会执行
本文关键字:什么 执行 C#Windows 应用程序 -Catch 语句 简单 | 更新日期: 2023-09-27 17:52:33
以下是所涉及的事件处理程序的代码:
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语句。我环顾四周,但似乎不明白为什么。。。
可能是因为this.Text
不是从输入框中读取的,而是在.中定义处理程序的类
我相信你想要的是:
try
{
seed = Convert.ToInt32(((TextBox)caller).Text);
}
使用以下方法(当然是暂时的(查看错误消息可能会有所帮助:
catch (FormatException exception)
{
MessageBox.Show("Input string is not a sequence of digits."
+ "Exception message was: " + exception.getMessage());
}
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.");
}
}
请使用上面的语句,它应该正确工作。如果您键入一个数字,第一个异常将不会执行。