フォームの初期化処理を行う

ポイント

概要

 フォームの初期化処理は、new演算子で実体を生成したときと、ShowメソッドやShowDialogメソッドを実行したときの2通りのタイミングで行うことができます。

 実体の生成時に初期化を行いたい場合は、もちろん構築子を使用します。Visual Studioを使用した場合、構築子はInitializeComponentメソッドを呼び出すように最初から 実装されていますので、InitializeComponentメソッドの呼び出しの後に初期化処理を書きます。

 構築子は実体の生成時に1度だけしか呼び出されないため、フォームが表示されるたびに初期化したい場合は次の手段を使います。

 Shownイベントを利用すると、ShowメソッドやShowDialogを呼び出したときに処理を行うことができます。

 このイベントは、Visual Studioのフォームデザイナの説明を見ると「フォームが最初に表示されたときに発生します」と書かれています。このような書き方では実体の生成後、最初にShowメソッドやShowDialogメソッドを呼び出したときだけしか実行されないようにも思えますが、実際にはこれらのメソッドを呼び出すたび、何度でも実行されます。

ソースコード

MainForm.cs (抜粋)

ShowHideLogForm showHideLogForm;

private void showButton_Click(object sender,EventArgs e)
{
  if(showHideLogForm==null) showHideLogForm=new ShowHideLogForm();
  showHideLogForm.ShowDialog();
}

ShowHideLogForm.cs (抜粋)

public partial class ShowHideLogForm : Form
{
  public ShowHideLogForm()
  {
    InitializeComponent();
    textBox.Text+="構築子が実行されました。\r\n";
  }

  private void ShowHideLogForm_Shown(object sender,EventArgs e)
  {
    textBox.Text+="Shownイベントが実行されました。\r\n";
  }

  private void ShowHideLogForm_VisibleChanged(object sender,EventArgs e)
  {
    textBox.Text+="VisibleChangedイベントが実行されました。\r\n";
  }
}

実行結果

一度フォームを開いてもう一度開いたときの実行結果。VisibleChangedは閉じたときと開いたときの両方で実行されるが、Shownは開いたときのみ実行される。なお、最小化してもどちらも実行されない。