- PR -

違うフォームのテキストボックスの値

1
投稿者投稿内容
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2005-12-29 16:35
表示されているForm1のボタンクリックでForm2を表示したのですが、Form2のテキストボックスの値を今度はForm2のボタンクリックでForm1のテキストボックスに渡したいです。すでに表示されているForm1でForm2のテキストボックスの値は利用できるのでしょうか。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-12-29 16:51
お世話になります。
引用:

いもさんの書き込み (2005-12-29 16:35) より:
表示されているForm1のボタンクリックでForm2を表示したのですが、Form2のテキストボックスの値を今度はForm2のボタンクリックでForm1のテキストボックスに渡したいです。すでに表示されているForm1でForm2のテキストボックスの値は利用できるのでしょうか。


ShowDialog で表示しているなら、
Me.Owner で Form1 のインスタンスがとれるので、
Form1 にキャストして、
Form1 に引数としてもらった文字を テキストボックスに表示するメソッドを用意し、
Form2 から呼んでやればよいのでは。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2005-12-29 17:36
「Form1のお仕事」:Form2 のインスタンスを作る
「Form1のお仕事」:Form2 を表示

「Form2のお仕事」:Form2 で値を入力してもらう
「Form2のお仕事」:Form2 の公開プロパティに値をセットする
「Form2のお仕事」:From2 を閉じる

「Form1のお仕事」:Form2 でセットしたプロパティから値を取得する
「Form1のお仕事」:Form2 を破棄する


[ メッセージ編集済み 編集者: かるあ 編集日時 2005-12-29 17:36 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-29 18:32
引用:

いもさんの書き込み (2005-12-29 16:35) より:

表示されているForm1のボタンクリックでForm2を表示したのですが、
Form2のテキストボックスの値を今度はForm2のボタンクリックで
Form1のテキストボックスに渡したいです。


以前、貴方が質問された、

  フォーム間で値を引き渡したい

とイメージは同じです。(タイミングが違うだけ)

引用:

すでに表示されているForm1でForm2のテキストボックスの値は利用できるのでしょうか。


とは言っても、表示する側と表示される側がある以上は「親子関係」があります。
なおこさんの方法より、かるあさんの方法が望ましいです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2005-12-29 20:24
自分でいくら考えても駄目だったのにできました!
本当にありがとうございます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-29 22:48
引用:

いもさんの書き込み (2005-12-29 20:24) より:

自分でいくら考えても駄目だったのにできました!
本当にありがとうございます。


どうやって解決したのかが判らないです。
推奨される方法で書いておきます。
VB.NET で良いのかな。

コード:

Option Strict On

Public Class Form1 : Inherits System.Windows.Forms.Form

 [ Windows フォーム デザイナで生成されたコード ]

  #Region " Form2 を表示するボタン "

    Private Sub btnShowForm2_Click(...) Handles btnShowForm2.Click
        Dim oForm2 As New Form2()

        Try ' Form2 で [OK] ボタンが押下された場合のみ OneValue を表示
            If oForm2.ShowDialog() = DialogResult.OK Then
                ' Form2 の OneValue に格納された値を取得
                Dim stOneValue As String = oForm2.OneValue
                MessageBox.Show(stOneValue)
            End If
        Finally
            ' oForm2 の破棄
            If Not oForm2 Is Nothing Then
                oForm2.Dispose()
            End If
        End Try
    End Sub
______________________________________________________________________

Option Strict On

Public Class Form2 : Inherits System.Windows.Forms.Form

  [ Windows フォーム デザイナで生成されたコード ]

  #Region " OneValue プロパティ "

    ' Form1 から取得したいデータ
    Private _OneValue As String

    Public ReadOnly Property OneValue() As String
        Get
            Return Me.TextBox1.Text
        End Get
    End Property

  #End Region

  #Region " [OK] ボタン "

    ' [OK] ボタンとする
    Private Sub btnOK_Click(...) Handles btnOK.Click
        Me._OneValue = "この値が欲しいので設定する"
        Me.DialogResult = DialogResult.OK
    End Sub

  #End Region

End Class


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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