我有一组函数乘以数值的输入,得到3个独立的相应文本框的总和。这工作得很好。
现在我试图包含一个函数,它将这3个分隔值的总和显示在一个单独的文本框“tbCombinedTotals”中。这是一个ASP.net Web应用程序,我相信所有标记都是正确的,但是当我包含我创建的新“CostEstimation”函数时,它不起作用。这是我的C#后端代码:
protected void TextBox1_checkedchanged(object sender, EventArgs e)
{
decimal Cost = 2.50m;
decimal TextBox1Total = decimal.Parse(TextBox1.Text) * Cost;
tbTextBoxTotal1.Text = TextBox1Total.ToString();
CostEstimation();
}
//there are 2 more of these for TextBox2_CheckChanged and TextBox3_CheckChanged
protected void CostEstimation()
{
decimal Temp = decimal.Parse(tbTextBoxTotal1.Text);
decimal Temp2 = decimal.Parse(tbTextBoxTotal2.Text);
decimal Temp3 = decimal.Parse(tbTextBoxTotal3.Text);
decimal Temp4 = Temp + Temp2 + Temp3;
tbCombinedTotals.Text = Temp4.ToString();
//this should update the "tbCombinedTotals" textbox with the sum of the other 3
}
第一部分是工作,tbTextBoxTotal 1-3文本框正确更新,但是当我包含“CostEstimation()”行时,它停止工作,并且tbCombinedTotals文本框根本不更新。
我确定我遗漏了一些简单的东西,感谢任何帮助!
编辑:感谢史蒂文和调试器我能够得到它的工作,改成它:
protected void CostEstimation()
{
decimal Temp = 0;
decimal Temp2 = 0;
decimal Temp3 = 0;
decimal Temp4 = 0;
try
{
Temp = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxTotal1.Text));
Temp2 = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxTotal2.Text));
Temp3 = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxtotal3.Text));
Temp4 = Temp + Temp2 + Temp3;
}
catch (Exception)
{
}
tbCombinedTotals.Text = Temp4.ToString();
}
但是,现在我唯一的(我认为)剩下的问题是tbCombinedTotals框仅在填写所有3个盒子时才更新。
我认为这是由于try语句在所有文本框都有值之前无效...
因此,尽管在标记中添加了“text =”0“”,但我仍然遇到一个问题,即仅在3个数量框中的每一个中输入值后计算总数。我修改了函数以检查复选框是否包含空字符串,如果是,则将其设置为0:
protected void CostEstimation()
{
decimal Temp = 0;
decimal Temp2 = 0;
decimal Temp3 = 0;
decimal Temp4 = 0;
if (tbTextBoxTotal1.Text == "")
{
tbTextBoxTotal1.Text = "0";
}
if (tbTextBoxTotal2.Text == "")
{
tbTextBoxTotal2.Text = "0";
}
if (tbTextBoxTotal3.Text == "")
{
tbTextBoxTotal3.Text = "0";
}
try
{
Temp = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxTotal1.Text));
Temp2 = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxTotal2.Text));
Temp3 = Convert.ToDecimal(string.Format("{0:0.00}", ttbTextBoxTotal3.Text));
Temp4 = Temp + Temp2 + Temp3;
}
catch (Exception)
{
}
tbCombinedTotals.Text = Temp4.ToString();
}
现在作为奖励,我将试图弄清楚为什么添加“Text =”0“”实际上似乎并没有在标记中将文本框的值设置为0,因为显然我添加的if语句显示问题是字符串文本框为空。