我正在尝试获取textBox19
数字(9,2)的结果,例如 17050.00 ,并在textBox20
中减去它的值,其中有之类的数字120 。所以 17050.00 - 120 。
我试图做到这一点:
textBox21.Text = (Convert.ToDouble(textBox19.Text) -
Convert.ToDouble(textBox20.Text)).ToString();
应该这样做:它应该减去textBox19 - textBox20。并在textBox21中显示结果。
确实:
但是当我在textBox19
中调试仍然是 17050.00 而在textBox20
中 120 。
我想在textBox21.Text
这行代码给了我这个例外:Input string was not in correct format.
当我将textBox19中的值从 17050.00 更改为* 17050 *时,程序会继续并且不会掉线。
请问我在哪里犯错?
答案 0 :(得分:1)
首先,这两个值看起来不应该存储在double
中。它们看起来像货币值,应该存储为小数。
将代码重写为以下内容:
decimal textBox19Value; //Needs a better name
decimal textBox20Value; //Needs a better name
if (!decimal.TryParse(textBox19.Text, out textBox19Value))
{
// textBox19 doesn't contain a valid decimal
// present error to user and return
}
if (!decimal.TryParse(textBox20.Text, out textBox20Value))
{
// textBox20 doesn't contain a valid decimal
// present error to user and return
}
decimal result = textBox19Value + textBox20Value;
textBox21.Text = result;
答案 1 :(得分:1)
我不知道你在设置textBox21的值时做了什么,例如点击一个按钮等,但我只是要使用TextChanged事件。
在我的 FormName .Designer.cs中,我在InitializeComponent()中有以下几行:
this.TextBox19.TextChanged += new System.EventHandler(this.ChangeValue);
this.TextBox20.TextChanged += new System.EventHandler(this.ChangeValue);
在实际的 FormName .cs文件中,我有以下内容:
private void ChangeValue(object sender, EventArgs e)
{
double text20, text19;
if (
!double.TryParse(TextBox19.Text, out text19) ||
!double.TryParse(TextBox20.Text, out text20)
)
{
TextBox21.Text = "Can't calculate.";
return;
}
TextBox21.Text = ( text19 - text20 ).ToString();
}
至于你获得FormatException Input string was not in correct format.
的原因,我无法告诉你。也许存在本地化问题,在这种情况下,您将不得不修改上面的TryParse
以使用正确的culture格式以及ToString()。在MSDN上查找“格式化类型”,因为我只能发布2个链接。当我在测试中尝试17050.00和17050时,这是首先想到的,并且没有任何问题。