基本的なことだけど、ちょっと躓いてしまったので備忘録。
this.Parent の内容が null になる
呼び出し元(親)のフォーム情報を使おうと、this.Parent
を使ってみたが、動かしてみると null になっている。
試行錯誤の結果、単純に使い方を間違えていたので、ShowDialogで呼び出した親フォームの情報を取得する方法をまとめておく。
ShowDialogで呼び出したフォーム情報の取得方法
呼び出し元(FormA):
FormB frm = new FormB();
frm.ShowDialog(this);
frm.Dispose();
呼び出し元では、ShowDialogの引数に、thisを指定していくことが必要。
子画面側(FormB):
if (this.Owner.Name == "FormA")
{
MessageBox.Show("FormAから開かれたよ");
}
まず、ShowDialogで呼び出された子画面にて、親画面を取得するのは、Parentではなく、Ownerで行う。
次に、フォーム情報が渡されるのがShowDialogの引数なので、コンストラクタでは使えないことを理解しておくこと。
(Load以降なら問題なし)
どうしてもコンストラクタで使いたい場合は、引数にして直接フォームを渡すしかない。