- - PR -
親子画面での値受渡しの方法
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-12-01 17:01
現在、VB.NETを用いてWindowsフォームでの開発をしております。
親画面から子画面を呼び出して、子画面で入力された値を 親画面のコントロール(例えばTextBoxとか)に 表示したいのですが、その方法が分からず悩んでおります。 親画面から子画面を呼び出すときは Dim frmChildForm As New ChildForm() frmChildForm.ShowDialog() と記述して呼び出しています。 この後、子画面のほうで親画面のコントロールに値をセットするのか、 それとも子画面で入力された値を共通変数などに格納し、 親画面で子画面が閉じられたというイベントを拾って 親画面側でその共通変数の値をコントロールに表示するのかなど いろいろと考えては試してみたのですが、 うまくいかず投稿させていただきました。 もし何かよい方法等がありましたらご教授よろしくお願い致します!! | ||||||||
|
投稿日時: 2004-12-01 17:12
どっちでも出来ます。
どうやってどううまくいかなかったんですか? うちではどっちの方法でもうまくいきました。 | ||||||||
|
投稿日時: 2004-12-01 17:14
こんにちは。
子画面側に子画面の変数等に格納した値を取得する機能を実装し、 それを親画面から呼出ましょう | ||||||||
|
投稿日時: 2004-12-01 17:41
イメージとしては、FileDialog クラスのように
・親/子画面で受け渡すデータは子画面クラスのプロパティにする とした上で、 ・事前に子画面に渡すプロパティを設定する ・ShowDialog メソッドで実行する ・子画面で設定した値をプロパティから読み取る という流れにすると、既存のダイアログとの整合性が取れていいんじゃないかと思います。 | ||||||||
|
投稿日時: 2004-12-01 21:25
なんだか、ここ2〜3週間で、同じような質問が集中していますね。
とりあえず、下のwwwというリンクから私のホームページへ。「.NET FrameworkおよびVS.NETに関するTips」をクリックして、一番上の見落としそうなところに「プログラムサンプル」というのがあるので、それクリック。 「他のDLLにあるフォームを表示する」となっていますが、基本は同じです。 _________________ | ||||||||
|
投稿日時: 2004-12-02 10:09
皆様からのアドバイスより作成してみましたところ
想像していた通りの動作が確認できました。 本当にありがとうございました。 下記にソースコードを記載致します。 呼出元の親画面 ---------------------------------------------------------------------- Private frmChild As New ChildForm() Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '子画面が閉じられたときのイベントを付加する AddHandler frmChild.Closed, AddressOf frmChild_Close frmChild.ShowDialog() End Sub Private Sub frmSW01_Product_Close(ByVal sender As System.Object, ByVal e As System.EventArgs) txtUserCode.Text = frmChild.FPub_GetSet_UserCode txtUserName.Text = frmChild.FPub_GetSet_UserName End Sub --------------------------------------------------------------------- 呼出先の子画面 --------------------------------------------------------------------- Private m_strCode As String Private m_strName As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click FPub_GetSet_UserCode = txtUserCode.Text FPub_GetSet_UserName = txtUserName.Text End Sub Public Property FPub_GetSet_UserCode() As String Get Return m_strCode End Get Set(ByVal Value As String) m_strCode = Value End Set End Property Public Property FPub_GetSet_UserName() As String Get Return m_strName End Get Set(ByVal Value As String) m_strName = Value End Set End Property --------------------------------------------------------------------- | ||||||||
|
投稿日時: 2004-12-02 10:14
上記ソースコードの「呼出元の親画面」に1ヶ所誤りが
ありましたので訂正させていただきます。 呼出元の親画面 ---------------------------------------------------------------------- Private frmChild As New ChildForm() Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '子画面が閉じられたときのイベントを付加する AddHandler frmChild.Closed, AddressOf frmChild_Close frmChild.ShowDialog() End Sub 訂正箇所(上記で付加したイベント名と合っていませんでした) ********************************************************* Private Sub frmChild_Close(ByVal sender As System.Object, ByVal e As System.EventArgs) ********************************************************* txtUserCode.Text = frmChild.FPub_GetSet_UserCode txtUserName.Text = frmChild.FPub_GetSet_UserName End Sub --------------------------------------------------------------------- |
1