1

我创建了两种不同的表单,一种供用户选择值,另一种用于显示所有总成本。

我确实声明了另一个类的一个实例,并将两个持有费用的变量传递给它。在第二个类中,我有一个构造函数接受参数,然后将它们分配给第二种形式中的变量。

尝试使用“.ShowDialog();”在第二个上显示结果时 方法,表格显示为空白,上面什么都没有。

第一种形式:

namespace DormAndMeal
{
    public partial class MainForm : Form
    {
        int ALLENPRICE = 1500;
        int PIKEPRICE = 1600;
        int FARTHINGPRICE = 1800;
        int UNIVERSITYPRICE = 2500;

        int MEAL7 = 600;
        int MEAL14 = 1200;
        int UNLIMITEDMEAL = 1700;



        public MainForm()
        {
            InitializeComponent();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            // close
            this.Close();
        }

        private void btnOkay_Click(object sender, EventArgs e)
        {

            int roomCharge = 0;
            int foodCharge = 0;

            // Checking for the room plan chosen, assigning price to roomCharge
            if (radAllen.Checked)
            {
                roomCharge = ALLENPRICE;
            }
            else if (radPike.Checked)
            {
                roomCharge = PIKEPRICE;
            }
            else if (radFarthing.Checked)
            {
                roomCharge = FARTHINGPRICE;
            }
            else if (radUniversity.Checked)
            {
                roomCharge = UNIVERSITYPRICE;
            }


            // Checking for which meal plan was selected, assign price to foodCharge
            if (radMeal1.Checked)
            {
                foodCharge = MEAL7;
            }
            else if (radMeal2.Checked)
            {
                foodCharge = MEAL14;
            }
            else if (radMeal3.Checked)
            {
                foodCharge = UNLIMITEDMEAL;
            }

            // Instance of Charges form
            Charges myCharges = new Charges(foodCharge, roomCharge);

            // Display the form
            myCharges.ShowDialog();
        }
    }
}

如您所见,表单会找到选择了哪些单选按钮并相应地分配价格,然后创建第二个表单的实例并显示它。

表格 2:

namespace DormAndMeal
{
    public partial class Charges : Form
    {
        int foodTotal;
        int roomTotal;

        public Charges()
        {
            InitializeComponent();
        }

        public Charges(int food, int room)
        {
            this.roomTotal = room;
            this.foodTotal = food;
        }

        private void Charges_Load(object sender, EventArgs e)
        {
            lblFood.Text = foodTotal.ToString("c");
            lblRoom.Text = roomTotal.ToString("c");

            lblTotal.Text = (foodTotal + roomTotal).ToString("c");
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            // close
            this.Close();
        }
    }
}

这个表单有一个构造函数来接受参数并分配它们,然后通过并将它们显示给位于表单上的适当变量。

由于某种原因,第二个表格显示为空白。

4

1 回答 1

4

您没有调用该InitializeComponents方法,它将从设计器文件中创建所有控件:

public Charges(int food, int room)
{
  InitializeComponent();
  this.roomTotal = room;
  this.foodTotal = food;
}

或者如评论中指出的那样,您可以调用其他构造函数:

public Charges()
{
  InitializeComponent();
}

public Charges(int food, int room)
  : this()
{
  this.roomTotal = room;
  this.foodTotal = food;
}
于 2013-10-15T17:28:13.433 回答