C#:如何从TextBox派生的类中的事件处理程序中引发异常?

时间:2015-09-16 14:25:33

标签: c# exception-handling

我正在开发一个数字文本框,一个从TextBox派生的控件,它只接受数字输入。 (是的,我知道其中有很多这些,但我看到的那些比它们需要的要复杂得多。)我的类重写OnKeyDown()并检查新输入的文本是否可以转换为一个数字,如果该数字在指定的限制范围内。如果数字超出限制,则引发InvalidOperationException。

当我在表单上测试此控件时,我希望看到弹出未处理的异常消息,但它没有。我认为这是因为忽略了从事件处理程序抛出的未处理异常。但是由于这个异常是从文本框中抛出的,所以我的表单上没有地方可以捕获这个异常。

我想我可以向名为BadValue的控件添加一个事件,但是我必须记住在我使用该控件的地方为该事件添加处理程序。我希望能够依赖标准的异常处理,但我不知道如何。

感谢您的想法。

1 个答案:

答案 0 :(得分:0)

如果您不希望文本框允许用户在其中写入数字,您可以轻松使用带有数字掩码的蒙版文本框 如果用户正在编写数字然后显示带有无效值的错误消息,则可以使用此尝试捕获代码

       try
        {
            int x = int.Parse(textBox1.Text);
        }
        catch
        {
            MessageBox.Show("The value is invalid");
        }

这将尝试将值解析为int ..如果它不是那么它抛出一个例外 你可以使用任何其他数值数据类型,具体取决于值