在c#中调用方法有问题

时间:2014-10-16 22:09:13

标签: c# methods return

我正在为一个介绍级别的c#calss工作,我很难找到方法。在某些情况下,这本书似乎并不十分清楚。对于我目前的任务,我正在尝试制定一个计算住院费用的计划。我们需要为该计划提供三种不同的方法。我觉得我至少创建了正确的方法,但我不确定如何在按钮单击事件期间使程序从这些方法输出内容。这是我到目前为止(我在calcBtn_Click方法中尝试了大约一百万种不同的东西,我很困惑)。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private int CalcStayCharges()
        {
            int lengthOfStay;
            lengthOfStay = int.Parse(dayStayed.Text);
            int totalStayCharges = (350 * lengthOfStay);
            return totalStayCharges;
        }

        private double CalcMiscCharges()
        {
            double medCharges;
            medCharges = double.Parse(medCharge.Text);

            double surgCharges;
            surgCharges = double.Parse(surgicalCharge.Text);

            double labFees;
            labFees = double.Parse(labFee.Text);

            double rehabCharges;
            rehabCharges = double.Parse(rehabCharge.Text);

            double MiscCharge = (medCharges + surgCharges + labFees + rehabCharges);
            return MiscCharge;
        }


        public double CalcTotalCharges()
        {


            double miscCharges = CalcMiscCharges();
            int stayCharges = CalcStayCharges();
            double totalCharges = miscCharges + stayCharges;
            return totalCharges;

        }


        private void calcBtn_Click(object sender, EventArgs e)
        {


           MessageBox.Show(CalcTotalCharges());
        }
    }
}

3 个答案:

答案 0 :(得分:0)

在代码中的某处,您必须将从方法返回的值赋给变量,然后显示/显示该变量。例如:

int stayCharcges = CalcStayCharges();

假设在文本框中用户填写了“3”。那么stayCharges将是'1050'。现在,您可以在标签中显示它或通过MessageBox显示它:

ResultLabel.Text = String.Format("Charge: {0}", stayCharges);
//or
ResultLabel.Tekst = stayCharges.ToString() //only the number

//With a MessageBox
MessageBox.Show(String.Format("Charge: {0}", stayCharge);

答案 1 :(得分:0)

如果你想分别展示三个不同的东西,你可以这样做:

private void calcBtn_Click(object sender, EventArgs e)
{
    string display = "Stay Charges: " + CalcStayCharges() + Environment.NewLine +
                     "Misc Charges: " + CalcMiscCharges() + Environment.NewLine + 
                     "Total Charges: " + CalcTotalCharges();

     MessageBox.Show(display);
}

这里,我正在构建一个我将传递给MessageBox.Show()的字符串。 MessageBox.Show()需要一个字符串参数,但您当前正在传递一个double。该字符串添加了一些英文文本来解释每个数字是什么,并显示数字。 Environment.NewLine会导致每笔费用显示在消息框的单独行中。

答案 2 :(得分:0)

将一些标签放在您的表单上:

  • lblStayCharge
  • lblMiscCharge
  • lblTotalCharge

然后在您的点击事件中:

lblMiscCharge.Text = Convert.ToString(CalcMiscCharges());
lblStayCharge.Text = Convert.ToString(CalcStayCharges());
lblTotalCharge.Text = Convert.ToString(CalcTotalCharges());

您的 CalcTotalCharges 方法也可以细化为:

  public double CalcTotalCharges()
    {
       return CalcMiscCharges() + CalcStayCharges();
    }

<强>更新

验证GUI输入的更强大方法。

private int CalcStayCharges()
{
   int lengthOfStay;
   if (int.TryParse(dayStayed.Text, out lengthReturnOfStay))
   {
      return 350 * lengthOfStay; 
   }
   return 0;       
}


    private double CalcMiscCharges()
    {
        double medCharges;
        double labFees;
        double surgCharges;
        double rehabCharges;

        if (double.TryParse(medCharge.Text, out medCharges) && 
            double.TryParse(surgicalCharge.Text, out surgCharges) &&
            double.TryParse(labFee.Text, out labFees) &&
            double.TryParse(rehabCharge.Text, out rehabCharges)
           )  
        {
            return (medCharges + surgCharges + labFees + rehabCharges);
        }
      return 0;
    }