C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ダイアログ側でダイアログを呼び出したフォームを取得


(過去ログ 84 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■49959 / inTopicNo.1)  ダイアログ側でダイアログを呼び出したフォームを取得
  
□投稿者/ 助六 (1回)-(2010/05/25(Tue) 16:15:39)

分類:[.NET 全般] 

VB2008で、あるフォーム(Form1とします)よりダイアログ(Dialog1)を開いたとします。

Dim d = New Dialog1
d.ShowDialog()

ここでDialog1より、Form1のプロパティなどを参照したいのですが、
ダイアログを開いたフォーム(のインスタンス)をダイアログ側で得るにはどうすればいいでしょうか?
Dialog1のコンストラクタに自分自身(Form1)を引数に渡してもいいのですが、
そんなことしなくとも、ダイアログ側でダイアログを呼び出したフォームが分かるんじゃないかと思って質問しました。
宜しくお願いします。
引用返信 編集キー/
■49960 / inTopicNo.2)  Re[1]: ダイアログ側でダイアログを呼び出したフォームを取得
□投稿者/ よねKEN (504回)-(2010/05/25(Tue) 16:42:19)
No49959 (助六 さん) に返信
> VB2008で、あるフォーム(Form1とします)よりダイアログ(Dialog1)を開いたとします。

Dailog1というクラスはSystem.Windows.Forms.Form クラスを継承したクラスですか?

> Dim d = New Dialog1
> d.ShowDialog()

d.ShowDialog(Me)
引数を取るオーバーロードの方に自分自身を渡します。
ダイアログ側では自身のOwnerプロパティで親フォームにアクセスできます。

> ここでDialog1より、Form1のプロパティなどを参照したいのですが、

Form1から渡したい情報をまとめた専用クラスを作成して、
Dialog1クラスにその専用クラスを受け渡すための公開プロパティを用意し、
それを利用するというのはどうでしょうか。
(Dialog1からForm1というウィンドウ自体を操作したいのでなければ、
Form1のインスタンス自身を渡す必要もありませんし)

> Dialog1のコンストラクタに自分自身(Form1)を引数に渡してもいいのですが、
> そんなことしなくとも、ダイアログ側でダイアログを呼び出したフォームが分かるんじゃないかと思って質問しました。

渡してもいないインスタンスを知ることはできません。
表示しているForm1クラスのインスタンスを探す方法ならありますが(Application.OpenForms)、
Form1クラスのインスタンスが複数ある場合、どのインスタンスが自分を開いたかはたぶんわかりません。
引用返信 編集キー/
■49961 / inTopicNo.3)  Re[1]: ダイアログ側でダイアログを呼び出したフォームを取得
□投稿者/ Hongliang (634回)-(2010/05/25(Tue) 16:42:52)
ShowDialog の引数に Form1 の参照(this)を渡せば、Owner で参照することができます。
// より望ましいのは、Dialog は呼び出し元を意識しない形にすることですが。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -