Vb.Net - 访问另一个表单上的控件中的文本

时间:2013-05-11 22:05:12

标签: vb.net visual-studio-2012

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

提前致谢。 克里斯

3 个答案:

答案 0 :(得分:1)

从您提供的示例中,您已经可以访问对Control的引用。而不是回到Form并尝试将该控件作为Form的属性进行访问,您可以直接转换引用并直接调用其Text属性。

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

答案 1 :(得分: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对象。

答案 2 :(得分:0)

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

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

请尝试:

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