1

2 つの異なるフォームを作成しました。1 つはユーザーが値を選択するためのもので、もう 1 つはすべての総コストを表示するためのものです。

他のクラスのインスタンスを宣言し、電荷を保持する 2 つの変数を渡しました。2 番目のクラス内で、コンストラクターに引数を受け入れさせ、2 番目のフォーム内の変数に割り当てました。

「.ShowDialog();」を使用して 2 番目の結果を表示しようとすると、メソッドでは、フォームは空白で何も表示されません。

最初のフォーム:

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 番目のフォームのインスタンスを作成して表示します。

フォーム 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();
        }
    }
}

このフォームには、引数を受け取って代入するコンストラクタがあり、フォーム上にある適切な変数に渡して表示します。

何らかの理由で、2 番目のフォームが空白で表示されます。

4

1 に答える 1