- PR -

親子画面での値受渡しの方法

1
投稿者投稿内容
さくら
ベテラン
会議室デビュー日: 2004/02/12
投稿数: 76
投稿日時: 2004-12-01 17:01
現在、VB.NETを用いてWindowsフォームでの開発をしております。
親画面から子画面を呼び出して、子画面で入力された値を
親画面のコントロール(例えばTextBoxとか)に
表示したいのですが、その方法が分からず悩んでおります。

親画面から子画面を呼び出すときは
Dim frmChildForm As New ChildForm()
frmChildForm.ShowDialog()
と記述して呼び出しています。
この後、子画面のほうで親画面のコントロールに値をセットするのか、
それとも子画面で入力された値を共通変数などに格納し、
親画面で子画面が閉じられたというイベントを拾って
親画面側でその共通変数の値をコントロールに表示するのかなど
いろいろと考えては試してみたのですが、
うまくいかず投稿させていただきました。

もし何かよい方法等がありましたらご教授よろしくお願い致します!!
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2004-12-01 17:12
引用:

親画面から子画面を呼び出すときは
Dim frmChildForm As New ChildForm()
frmChildForm.ShowDialog()
と記述して呼び出しています。
この後、子画面のほうで親画面のコントロールに値をセットするのか、
それとも子画面で入力された値を共通変数などに格納し、
親画面で子画面が閉じられたというイベントを拾って
親画面側でその共通変数の値をコントロールに表示するのかなど


どっちでも出来ます。
引用:

うまくいかず投稿させていただきました。

もし何かよい方法等がありましたらご教授よろしくお願い致します!!


どうやってどううまくいかなかったんですか?

うちではどっちの方法でもうまくいきました。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-12-01 17:14
こんにちは。

子画面側に子画面の変数等に格納した値を取得する機能を実装し、
それを親画面から呼出ましょう
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-12-01 17:41
イメージとしては、FileDialog クラスのように
・親/子画面で受け渡すデータは子画面クラスのプロパティにする
とした上で、
・事前に子画面に渡すプロパティを設定する
・ShowDialog メソッドで実行する
・子画面で設定した値をプロパティから読み取る
という流れにすると、既存のダイアログとの整合性が取れていいんじゃないかと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-12-01 21:25
なんだか、ここ2〜3週間で、同じような質問が集中していますね。

 とりあえず、下のwwwというリンクから私のホームページへ。「.NET FrameworkおよびVS.NETに関するTips」をクリックして、一番上の見落としそうなところに「プログラムサンプル」というのがあるので、それクリック。

 「他のDLLにあるフォームを表示する」となっていますが、基本は同じです。
_________________
さくら
ベテラン
会議室デビュー日: 2004/02/12
投稿数: 76
投稿日時: 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/02/12
投稿数: 76
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)