问题描述
我正在尝试将多个用户输入框输入添加在一起进行计算,然后将它们显示到标签框中。当我使用计算 btn 时,我不知道为什么。我的标签框刚好等于 0。我的 btnClear 也可以清除输入文本框。如果我改变 miscChargelbl.Text = miscCharge.ToString();到 miscChargelbl.Text = 1.ToString();它将杂项费用标签框显示为 1。但如果我将其保留为 0,则意味着它不会从 CalcMiscCharges() 中进行计算。我如何才能将正确的文本输出到空标签中。
//*Variables*//
private double dayCharge;
private double mediCharge;
private double surgCharge;
private double labCharge;
private double rehabCharge;
private double daysstay;
private double stayCharge;
private double miscCharge;
private double totalCharge;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,EventArgs e)
{
}
private void btnExit_Click(object sender,EventArgs e)
{
this.Close();
}
private void btncalc_Click(object sender,EventArgs e)
{
/*I Cant figure why this doesn't change the labels to the inputted text*/
miscChargelbl.Text = miscCharge.ToString();
stayChargelbl.Text = stayCharge.ToString();
totalChargelbl.Text = totalCharge.ToString();
}
private void CalcStayCharges()
{
/*Calculate the days stayed price*/
dayCharge = 350;
daysstay = Double.Parse(daySpenttxt.Text);
stayCharge = dayCharge * daysstay;
}
private void CalcMiscCharges()
{
mediCharge = double.Parse(medicationtxt.Text);
surgCharge = double.Parse(surgicaltxt.Text);
labCharge = double.Parse(labfeetxt.Text);
rehabCharge = double.Parse(rehabtxt.Text);
miscCharge = mediCharge + surgCharge + labCharge + rehabCharge;
}
private void CalcTotalCharges()
{
/*Add stay charge with misc charge*/
totalCharge = stayCharge + miscCharge;
}
private void btnClear_Click(object sender,EventArgs e)
{
/*Clears and resets textBoxes for new data */
medicationtxt.Text = String.Empty;
surgicaltxt.Text = String.Empty;
labfeetxt.Text = String.Empty;
rehabtxt.Text = String.Empty;
daySpenttxt.Text = String.Empty;
}
}
} '''
解决方法
(评论会很乱)
我建议您阅读 Binding 并改用 Binding。暂时(可能是一个爱好项目),尝试像这样更改代码:
//*Variables*//
private decimal dayCharge;
private decimal mediCharge; // change the rest to decimal also
// ...
private void btnCalc_Click(object sender,EventArgs e)
{
Calculate();
}
private void Calculate()
{
/* Use TryParse instead of Parse */
/*Calculate the days stayed price*/
dayCharge = 350;
daysStay = decimal.Parse(daySpenttxt.Text);
stayCharge = dayCharge * daysStay;
mediCharge = decimal.Parse(medicationtxt.Text);
surgCharge = decimal.Parse(surgicaltxt.Text);
labCharge = decimal.Parse(labfeetxt.Text);
rehabCharge = decimal.Parse(rehabtxt.Text);
miscCharge = mediCharge + surgCharge + labCharge + rehabCharge;
/*Add stay charge with misc charge*/
totalCharge = stayCharge + miscCharge;
/*I Cant figure why this doesn't change the labels to the inputted text*/
miscChargelbl.Text = miscCharge.ToString();
stayChargelbl.Text = stayCharge.ToString();
totalChargelbl.Text = totalCharge.ToString();
}
private void btnClear_Click(object sender,EventArgs e)
{
/*Clears and resets textboxes for new data */
medicationtxt.Text = String.Empty;
surgicaltxt.Text = String.Empty;
labfeetxt.Text = String.Empty;
rehabtxt.Text = String.Empty;
daySpenttxt.Text = String.Empty;
}
PS:还要注意,这些变量都不需要声明。它们都用于计算并且只是局部变量。即:
private void Calculate()
{
/* Use TryParse instead of Parse */
/*Calculate the days stayed price*/
var dayCharge = 350;
var daysStay = decimal.Parse(daySpenttxt.Text);
var stayCharge = dayCharge * daysStay;
// ...