フォームBで選択されたデータをフォームAに反映したいという状況になった。
フォームBがモーダルダイアログならShowDialogで問題ないんだけど、
フォームAと常に一緒に表示されているウィンドウなので、親子関係を構築する。
親子関係の構築の仕方は簡単。子ウィンドウのShowメソッド呼び出し時に親を渡す。
/*---------------------------------------------------------------------------*/
public FormA() {
this.Shown += delegate(object sender, EventArgs e) {
Form formB = new Form();
formB.Show(this);
};
}
/*---------------------------------------------------------------------------*/
上記の例では、コンストラクタでShownイベントハンドラを設定し、
イベントハンドラ内でフォームBを生成、親として自分自身を渡している。
コンストラクタ内で直接やると、親のインスタンスが生成されておらず、
期待通りの結果にならないので注意。
表示位置もこちらで自由に指定したいのなら、
StartPositionプロパティをFormStartPosition.Manualに設定して Location を弄る。
常にその配置に固定したいならMoveやResizeにイベントハンドラを設定。
0 件のコメント:
コメントを投稿