- 題名: 親フォームデータの取得方法
- 日時: 2005/02/04 18:58:50
- ID: 8918
- この記事の返信元:
- (なし)
- この記事への返信:
- [8919] Re[1]: 親フォームデータの取得方法2005/02/04 19:17:26
- ツリーを表示
じゃんぬねっと です。
■No8918に返信(みらいさんの記事)
> フォーム1を親としてフォーム2を子として
> フォーム1のデータをフォーム2で使いたい場合に
と、仰ってるわりに、
> 'ボタンクリックでウィンドウ作成
> Dim Zikan As New Form2
> Zikan.ShowDialog()
こちらで、MDI Form との結びつきはなされてませんが、これは問題ないのでしょうか?
以下、私が試したコード。
Source:---------------------------------------------------------
【MDI 親フォーム】
Friend fStr As String = "HogeFooBar"
Private Sub FormMain_Load(...) Handles MyBase.Load
Dim hForm1 As New Form1()
hForm1.MdiParent = Me
hForm1.Show()
End Sub
----------------------------------------------------------------
【MDI 小フォーム】
Private Sub Button1_Click(...) Handles Button1.Click
TextBox1.Text = DirectCast(Me.MdiParent, FormMain).fStr
End Sub
じゃんぬねっと です。
■No8960に返信(みらいさんの記事)
> 前レスお名前を間違えていた、すいません<m(__)m>
いえいえ、お気になさらないでください。
よくあることです。
> 親、子という単語の使い方が間違っていたようで、申し訳ありません。
どうやら、
> -----------------------------------------------------------
■No8918に返信(みらいさんの記事)
TextBox1.text=DirectCast(MdiParent, フォーム1).riyou
> -----------------------------------------------------------
と「MdiParent」なる表現があったものですから、私が勝手に勘違いしていたようです。
MDI 云々は関係なかったようで、申し訳ありませんでした。
> 上記の部分をMeではなく外といった意味にすればいいのかと思い調べたのですが、
> 見つからず、先週購入した本にもMDIの使用方法しか乗っていないため苦戦しています。
> 重ね重ねで申し訳ありませんが、ご指導お願い致します。
親子ということは、通常 Modal 表示になるのでしょうか?
単純に書けば、(本来はプロパティを通すべきですが)
Source:----------------------------------------------------
'[オーナ側]
Friend fStr As String = "Hoge"
Private Sub Button1_Click(...) Handles Button1.Click
Dim hForm1 As New Form1()
hForm1.ShowDialog(Me)
End Sub
-----------------------------------------------------------
'[被オーナ側]
Private Sub Button1_Click(...) Handles Button1.Click
TextBox1.Text = DirectCast(Me.Owner, FormMain).fStr
End Sub
------------------------------------------------------------
とか。
敢えて、言いませんでしたが、仕様上、親子関係であるのならば、
本来、渡したいデータを初めに渡しておくべきです。
要するに、双方向では親子とは言えませんから。
今回とは逆の事例。
http://www7.big.or.jp/~pinball/discus/vb/57179.html
分類:[.NET]
【解決したい問題】
よろしくお願いします。
フォーム間のデータの取得方法について質問です。
フォーム1を親としてフォーム2を子として
フォーム1のデータをフォーム2で使いたい場合に
--フォーム1--
Public riyou As String="フォーム1のデータ!"
'ボタンクリックでウィンドウ作成
Dim Zikan As New Form2
Zikan.ShowDialog()
--フォーム2--
TextBox1.text=DirectCast(MdiParent, フォーム1).riyou
宣言で「Dim」ではなく「Public」にするという事は突き止めたのですが他の理由が分からず
上記のままだとインスタンスが設定されていないとエラーが出てしまいます。
初歩的は質問かとは思いますが、自分では解決できなかったためご指導お願いします。
【解決するために何をしたか】
掲示板等で同じような問題はいくつか発見したのですが、解決できる投稿させて頂きました。