簡體   English   中英

Vb.Net-訪問另一種形式的控件中的文本

[英]Vb.Net - Accessing text in controls on another form

我對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

提前致謝。 克里斯

從給出的示例中,您已經可以訪問對Control的引用。 無需返回到Form並嘗試將控件作為Form的屬性來訪問,您只需投射引用並直接調用其Text屬性即可。

If ctrl.Name = "UserName" Then
    MsgBox(DirectCast(ctrl, TextBox).Text) 'Assuming your UserName control is a TextBox
End If

如果要引用打開的窗體上的控件,則將其稱為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對象。

通過此命令,我可以用另一種形式更改控制量。

My.Forms.myForm.labelControl.Text = "bela"

請嘗試這個:

MsgBox(My.Forms.UserData.UserName.Text) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM