日期:2014-05-18  浏览次数:20965 次

winform 输入字符串的格式不正确
我的程序窗口上有几个文本框,我想在文本框中输入数字, 并使用 keypress 事件限制只能输入数字;程序调试没有出错,但是运行后,在文本框中输入数字之后就出错了:


但是出错 说“字符串格式不正确“,我尝试使用使用 double.TryParse(),去验证,但还是错了,
我不知道为什么,请大家帮帮我,谢谢!  
   


  if (double.TryParse(txt1.Text, out B11))
  {
  B11 = B11;
  }
  else
  {
  MessageBox.Show("程序出错!");
  }
  B12 = Convert.ToDouble(txt2.Text);
  B13 = Convert.ToDouble(txt3.Text);
  L11 = Convert.ToDouble(txt4.Text);
  L12 = Convert.ToDouble(txt5.Text);
  L13 = Convert.ToDouble(txt6.Text);
  A11 = Convert.ToDouble(txt7.Text);
  A12 = Convert.ToDouble(txt8.Text);
  A13 = Convert.ToDouble(txt9.Text);”

------解决方案--------------------
类型不正确。是不是输入有字母,空格或特殊字符?

double.TryParse()应该不会报错呀,提示什么错误?
------解决方案--------------------
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
//检测是否已经输入了小数点
bool IsContainsDot = ((TextBox)sender).Text.Contains(".");
if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8) && (e.KeyChar != 46))
{
e.Handled = true;
}
else if (IsContainsDot && (e.KeyChar == 46)) //如果输入了小数点,并且再次输入
{
e.Handled = true;
}
}


直接限定你的文本框只可以输入数字。
------解决方案--------------------
问题在这里,double.TryParse(txt1.Text, out B11) 你第一次输入时txt1.Text是一个空的字符串,所以报错
------解决方案--------------------
他是在keypress事件里面,怎么第一次输入空字符串呢
探讨

问题在这里,double.TryParse(txt1.Text, out B11) 你第一次输入时txt1.Text是一个空的字符串,所以报错