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 番目のフォームが空白で表示されます。