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

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

If ctrl.Name = "UserName" Then
    MsgBox(DirectCast(ctrl, TextBox).Text) 'Assuming your UserName control is a TextBox
End If
于 2013-05-11T23:59:39.983 回答
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 回答
0

By this command, I could change the amount of control in another form.

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

Please try this :

MsgBox(My.Forms.UserData.UserName.Text) 
于 2019-07-13T15:22:14.827 回答