- ベストアンサー
Formの間に値を渡すことについて
素人の質問が以下のとおりです。 【Form1の設置:】 TextBox1 Button1 【Form2の設置:】 Label1 【要求:】 1. Form1のTextBox1に値(文字)を入力して、Button1をクリックすれば 2. Form2のLabel1からTextBox1に入力された値(文字)を表示される。 要するFormの間に値を渡すことです。 もちろん、ネットでも調べましたが、説明されたことをよくわからなかったのでシンプルなコードが頂きたいです。 自分が作ったNGものもアップします。 ------------------Form1内に記載した内容------------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim tmpMsg As String tmpMsg = TextBox1.text Dim frmFrom1 As New Form1 frmFrom1.Show(tmpMsg) End Sub ---------------------------------------------------- ------------------Form2内に記載した内容------------- Public Class Form3 Private Sub Form2_Load(ByRef tmpMsg As String) Label1.Text = tmpmsg End Sub End Class ---------------------------------------------------- 結果として、エラーがなかったが、label1に何も表示されなかったです。 宜しくお願い致します。^@^
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
過去に同様な質問がされています。 以下の質問の#2の回答のようにコンストラクタで値を渡すのが良いと思います。 http://oshiete1.goo.ne.jp/qa941460.html フォーム間(クラス間かな?)の受け渡しは最初に躓き易い所なので、しっかりと理解しておいた方がよいです。 尚、子フォームから親フォームの値を書き換えたい時などは、親フォーム自身を子フォームに渡したりします。
その他の回答 (2)
- kiki_s
- ベストアンサー率59% (147/248)
私も2008は勉強中です。 VB6と違って理解出来ていない部分がほとんどですが。 Form2を開く前に(開いた後でも)、 Form1のTextBox1の文字をForm2のLabel1へ代入するだけじゃないでしょうか? Form2.Label1.Text = TextBox1.Text フォームが違う場合、コントロールの存在場所を指定しないと駄目です。 他の方法もあるのかも知れません。
お礼
ご返事頂き、ありがとうございました。 本件の目的はFrom間に値渡しの仕方を勉強したいことです。 なので、教えた方法では、結果を達成できますが、目的には便妙な感じですね!^0^
- n-jun
- ベストアンサー率33% (959/2873)
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.Label1.Text = TextBox1.Text Form2.Show() End Sub End Class シンプルすぎるかな? 的はずれでしたらごめんなさい。
お礼
ご返事頂き、ありがとうございました。 シンプルなコートのほうが理解しやすいと思います。 教えた方法では、結果を達成しましたが、From間に値渡しの仕方と違いますかな(?) これからも、まだ何か質問があったら、よろしくお願いします。^o^
補足
ご返事頂き、ありがとうございました。 参照ページを見ましたが、いくつの不明点がありまして、宜しければ教えて頂きたいです。 1 Dim frmObj As Formは"frmObj"をform型に定義すると、別formに直接に値渡し(認識)ことになるでしょうか。 2 frmObj = New Form2("a.txt")はどういう風に解釈すればよいでしょうか 3 MyBase.New()とInitializeComponent()の役目は何でしょうか?