【问题标题】:Calculation output not transfering计算输出未传输
【发布时间】:2021-07-30 17:00:25
【问题描述】:

我正在尝试将多个用户输入框输入添加在一起进行计算,然后将它们显示到标签框中。当我使用计算 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;
    }
}

} '''

【问题讨论】:

  • 为什么要从 CalcMiscCharges 获取结果?可能您希望将该代码移动到 CalcMiscCharges 并在单击时调用 CalcMiscCharges()。再读一遍。您的计算不必要地分散。他们需要全部调用。
  • 你实际上在哪里调用CalcStayCharges()?我怀疑您可能没有在更改标签文本之前调用该方法。你会在其他地方调用这个方法吗?

标签: c# visual-studio simple-form


【解决方案1】:

(评论会很乱)

我建议你阅读 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;
// ...    

【讨论】:

    猜你喜欢
    • 2022-01-10
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2020-08-16
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多