简单的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语句。我环顾四周,但似乎不明白为什么。。。

简单的C#Windows应用程序-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.");
            }
        }

请使用上面的语句,它应该正确工作。如果您键入一个数字,第一个异常将不会执行。