当我尝试从小数点开始进行小数计算时,我的程序崩溃了。例如," .9"会导致它崩溃,而" 0.9"工作正常。
以下是代码:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar)
&& (e.KeyChar != '.'))
{
e.Handled = true;
}
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
if (e.KeyChar == Convert.ToChar(Keys.Return))
{
textBox2.Text = Area1.ToString();
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == String.Empty)
{
textBox2.Text = " ";
}
else
Diameter1 = double.Parse(textBox1.Text);
Area1 = (Math.PI * Math.Pow((Diameter1 / 2), 2));
}
答案 0 :(得分:0)
在键入时更新值时,如果键入句点并且文本框仅包含"."
,则会失败。解析时,会导致异常。
使用TryParse
尝试解析值,并在解析失败时执行其他操作。例如:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == String.Empty) {
textBox2.Text = " ";
} else {
if (double.TryParse(textBox1.Text, out Diameter1)) {
Area1 = Math.PI * Math.Pow((Diameter1 / 2), 2);
textBox2.Text = Area1.ToString();
} else {
textBox2.Text = "-not numeric-";
}
}
}
答案 1 :(得分:0)
您的问题是您将非数字文本传递给需要数值的函数:
Diameter1 = double.Parse(textBox1.Text);
例如,如果您将文本框值更改为“hello”,则可能会发生这种情况。您需要做的是放入另一个条件语句,以确保您的代码只接受“数字”文本。
忍受我,我正在研究一个例子......