我正在尝试为学校任务编写一个简单的计算器,但我遇到的问题是,如果我离开textBox1&计算器总是会崩溃。 textBox2为空。相反,如果其中一个或两个都留空,我希望文本出现在label2中:
sourceCpp()
答案 0 :(得分:0)
如果其中任何一行是空的,应用程序会在这两行中的一行中抛出异常:
Zahl1 = Convert.ToDouble(textBox1.Text);
Zahl2 = Convert.ToDouble(textBox2.Text);
在将其值转换为decimal
之前,您应该检查TextBoxes是否为空。所以,试试这样:
private void button1_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrEmpty(textBox2.Text))
{
label2.Text = "Bitte 2 Zahlen eingeben";
}
else
{
Zahl1 = Convert.ToDouble(textBox1.Text);
Zahl2 = Convert.ToDouble(textBox2.Text);
label2.Text = label2.Text.Replace(".", ",");
}
}
另外,您应该检查该文本是否可以转换为double。如果用户在textBox1
中写入abc并在textBox2
中写入3,该怎么办?你会得到一个例外。
所以,添加额外的检查,如下所示:
double z1;
double z2;
if (String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrEmpty(textBox2.Text))
{
label2.Text = "Bitte 2 Zahlen eingeben";
}
else if (!double.TryParse(textBox1.Text, out z1) || !double.TryParse(textBox2.Text, out z2))
{
label2.Text = "Das sind keine korekt Zahlen! :)";
}
else
{
//rest of your code
Zahl1 = Convert.ToDouble(textBox1.Text);
//etc....
}