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

本文关键字:程序 事件处理 异常 派生 TextBox | 更新日期: 2023-09-27 18:12:56

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

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

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

感谢您的关心。

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

如果你不想让文本框允许用户在里面写数字,你可以很容易地使用一个带数字掩码的遮罩文本框如果你同意用户写数字,然后显示一个无效值的错误消息,你可以使用这个try catch代码

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

this将尝试将值解析为int ..如果不是,则抛出异常当然,你可以根据

的值使用任何其他数字数据类型。