1

私は vb.net にかなり慣れていないので、開いている別のフォームから値 (テキスト ボックスの .text など) にアクセスできるようにしたいと考えています。私のアプリケーションでは、メイン フォームからフォームを開きます。メイン フォームのコントロールのテキストにアクセスしようとすると、コントロールの .text 値が表示されません。

メイン フォームのすべてのコントロールを問題なくループできますが、実際の値を確認したい場合、すべてのコントロールが空です。テキスト ボックスやコンボ ボックスなどのコントロールは、タブ コントロールとグループ ボックス内にあります。

開いているフォームのすべての .text または値を他の開いているフォームから使用できるようにする方法はありますか?

メインフォームのコントロールをループする方法は次のとおりです。

Try

    For Each Tp As TabPage In UserData.UserTabControl.TabPages 

    'Name of Tabcontrol is UserTabcontrol

        For Each gbx As GroupBox In Tp.Controls


            For Each ctrl As Control In gbx.Controls

                    If ctrl.Name = "UserName" Then
                        MsgBox(UserData.UserName.Text) 'Messagebox here is empty
                    End If

            Next ctrl

        Next gbx


    Next Tp


    Me.Close()

Catch ex As Exception
    MsgBox(ex.Message)
End Try

前もって感謝します。クリス

4

3 に答える 3

1

開いているフォームのコントロールを参照する場合は、それを Form1 と呼びます。まず、呼び出し元のフォームに Form1 プロパティまたは変数を追加します。

Public Class Form2
    Public Property f1 As Form1

    ...
    Private Sub DoSomething()
        MsgBox("Here's some text from Form1: " & f1.Textbox1.Text)
    End Sub
End Class

呼び出し先フォームで、Form2 プロパティをフォーム オブジェクトに設定します。

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       Form2.f1 = Me
       Form2.ShowDialog() ' or Form2.Show()
    End Sub
End Class

次に、f1 プロパティを使用して Form2 からすべての Form1 オブジェクトを参照できます。

于 2013-05-12T00:35:40.277 に答える