C# C中windows窗体非数字文本框的异常处理#

C# C中windows窗体非数字文本框的异常处理#,c#,exception,exception-handling,C#,Exception,Exception Handling,所以我有一个简单的表单,用户可以输入一个双值 这就是我的表单应该是什么样子 但是,如果用户有意或无意输入非数字值,则会出现错误: Input String was not correct format 我听说了一种方法,叫做异常处理。如何生成自己的错误消息以使程序不会崩溃?使用double.TryParse() 如果要使用异常,可以使用以下代码: try { Double d = Double.Parse(textBox1.Text); } catch (FormatExceptio

所以我有一个简单的表单,用户可以输入一个双值

这就是我的表单应该是什么样子

但是,如果用户有意或无意输入非数字值,则会出现错误:

Input String was not correct format
我听说了一种方法,叫做异常处理。如何生成自己的错误消息以使程序不会崩溃?

使用double.TryParse()


如果要使用异常,可以使用以下代码:

try
{
    Double d = Double.Parse(textBox1.Text);
}
catch (FormatException)
{
    MessageBox.Show("Your custom message");
}

看一些文件怎么样?我假设您正在使用许多
Parse
方法之一将字符串转换为数字。改用
TryParse
。如果无法转换,则不会崩溃。Egad。虽然您可能正在学习异常处理,但一旦您学习了,请不要以这种方式使用它。通常,当您可以约束输入并显示非中断性消息时,不要使用异常和消息框来响应用户输入。例如,您可以处理TextBox事件以忽略非数字键,如果需要,在按下非数字键时显示警告消息。在这个早期阶段,这样的考虑可能还为时过早,但请在您理解UI开发的过程中记住它们。祝你好运我的程序运行平稳,没有崩溃,但变量“ex”从未使用过?它的作用是什么?噢,所以catch()方法必须接受一个参数,从而创建一个新变量?那个变量后来做了什么?我还想让我的程序更有效率。@Mike不需要像Szymon说的那样声明变量。只需尝试捕获(FormatException)@L.B谢谢!我不知道(脸红)。你每天都可以学到新东西!我编辑了我的答案来反映这一点。那么为什么你要使用像
这样的词呢?这是C#
的要求。人们可能会相信这一点。好吧,它起作用了,但出于某种原因,如果我在错误的答案上按下回车键,它会继续将其视为零值。我的程序的目的是让用户输入10个值。但即使用户只需按enter键,它仍将作为计数。我该如何解决这个问题?这与将值转换为double后如何处理该值更相关。我们看不到那个密码。我会问另外一个问题,并显示更新的代码。
try
{
    Double d = Double.Parse(textBox1.Text);
}
catch (FormatException)
{
    MessageBox.Show("Your custom message");
}