我对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
提前致谢。 克里斯
答案 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)