我正在开发一个数字文本框,一个从TextBox派生的控件,它只接受数字输入。 (是的,我知道其中有很多这些,但我看到的那些比它们需要的要复杂得多。)我的类重写OnKeyDown()并检查新输入的文本是否可以转换为一个数字,如果该数字在指定的限制范围内。如果数字超出限制,则引发InvalidOperationException。
当我在表单上测试此控件时,我希望看到弹出未处理的异常消息,但它没有。我认为这是因为忽略了从事件处理程序抛出的未处理异常。但是由于这个异常是从文本框中抛出的,所以我的表单上没有地方可以捕获这个异常。
我想我可以向名为BadValue的控件添加一个事件,但是我必须记住在我使用该控件的地方为该事件添加处理程序。我希望能够依赖标准的异常处理,但我不知道如何。
感谢您的想法。
答案 0 :(得分:0)
如果您不希望文本框允许用户在其中写入数字,您可以轻松使用带有数字掩码的蒙版文本框 如果用户正在编写数字然后显示带有无效值的错误消息,则可以使用此尝试捕获代码
try
{
int x = int.Parse(textBox1.Text);
}
catch
{
MessageBox.Show("The value is invalid");
}
这将尝试将值解析为int ..如果它不是那么它抛出一个例外 你可以使用任何其他数值数据类型,具体取决于值