为什么 Tryparse 不工作并立即抛出捕获?
Why is the Tryparse not working and instantly throwing the catch?
结果不会进入我的结果文本框,只要我在第一个中输入任何内容,它就会立即给我 "Number 2 is invalid" 捕获。我是新手,不明白为什么它不起作用。
namespace ShippingCalculator_BradleyH
{
public partial class Form1: Form
{
double total;
public Form1()
{
InitializeComponent();
}
private void Calculate_Click(object sender, EventArgs e)
{
}
private void Number1_TextChanged(object sender, EventArgs e)
{
//assigning variables
double num1;
double num2;
double result;
//making sure numbers 1 and 2 are numbers.
if (double.TryParse(Number1.Text, out num1))
{
if (double.TryParse(Number2.Text, out num2))
{
result = num1 * num2;
Result.Text = result.ToString();
}
else
{
MessageBox.Show("Number 2 is invalid.");
}
}
else
{
MessageBox.Show("Number 1 is invalid.");
}
}
}
}
我假设两个文本框最初都是空的。只要您在 Number1
中输入内容,此代码就会 运行,并且 Number2
将为空。空字符串是无效的 double
,因此 TryParse
将 return false
.
这是我的建议:
- 首先,将此逻辑拉出到一个单独的函数中。将其命名为
UpdateResult
或类似名称。
- 从
Number1_TextChanged
和 Number2_TextChanged
调用此函数
- 在
UpdateResult
中,应用以下逻辑:
- 如果
Number1.Text
或 Number2.Text
是空字符串,则将 Result.Text
设置为空字符串。
- 否则,执行您现有的逻辑。
结果不会进入我的结果文本框,只要我在第一个中输入任何内容,它就会立即给我 "Number 2 is invalid" 捕获。我是新手,不明白为什么它不起作用。
namespace ShippingCalculator_BradleyH
{
public partial class Form1: Form
{
double total;
public Form1()
{
InitializeComponent();
}
private void Calculate_Click(object sender, EventArgs e)
{
}
private void Number1_TextChanged(object sender, EventArgs e)
{
//assigning variables
double num1;
double num2;
double result;
//making sure numbers 1 and 2 are numbers.
if (double.TryParse(Number1.Text, out num1))
{
if (double.TryParse(Number2.Text, out num2))
{
result = num1 * num2;
Result.Text = result.ToString();
}
else
{
MessageBox.Show("Number 2 is invalid.");
}
}
else
{
MessageBox.Show("Number 1 is invalid.");
}
}
}
}
我假设两个文本框最初都是空的。只要您在 Number1
中输入内容,此代码就会 运行,并且 Number2
将为空。空字符串是无效的 double
,因此 TryParse
将 return false
.
这是我的建议:
- 首先,将此逻辑拉出到一个单独的函数中。将其命名为
UpdateResult
或类似名称。 - 从
Number1_TextChanged
和Number2_TextChanged
调用此函数
- 在
UpdateResult
中,应用以下逻辑:- 如果
Number1.Text
或Number2.Text
是空字符串,则将Result.Text
设置为空字符串。 - 否则,执行您现有的逻辑。
- 如果