VB.NET:从第二形式检索值的最佳方法是什么?
-
09-09-2019 - |
题
我正在自学vb.net。
这是我最近遇到的一个问题。说我的应用程序中有一个主form1。 Form1调用第二个登录名称(如名称所建议)是带有用户名/密码类型字段的登录窗口。预期的行为是登录名将捕获登录详细信息并将其传递给Form1。
做这个的最好方式是什么?
在我看来,我正在思考诸如“ dologin'的函数呼叫的线路”的思考,该函数会“显示”登录名,捕获输入的数据,处置表单并返回登录详细信息(可能是某种bean)。不知何故,我认为这是不可能的
我目前所拥有的不那么优雅。登录形式由Form1模态显示(IE ShowDialog); “我”的引用传递到第二个窗口。在登录名中收到用户输入后,我在Form1上设置一个值,然后处置。
这是每个人都这样做的方式吗?
解决方案
我总是以代表将其传递给第二种形式,该形式可以称为“将”值从第二形式“传递”到第一个形式。
这样,您避免了任何紧密的耦合。
经典观察者模式。
实施示例如下:
将委托签名添加到Form1。在Form1的按钮点击事件处理程序中,实例化Form2类和Form1的代表。将Form2的函数分配给委托,并致电委托:
'Form1.vb
Public Delegate Sub delPassData(ByVal text As TextBox)
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
Dim frm As Form2 = New Form2
Dim del As delPassData = New delPassData(AddressOf frm.funData)
del(Me.textBox1)
frm.Show()
End Sub
在Form2中,添加委托将指向的函数。此功能将把TextBox1的文本分配给Label1。
'Form2.vb
Public Sub funData(ByVal text As TextBox)
label1.Text = text.Text
End Sub
要将数据传递回FORM1,只需制作 funData
返回您想要的值的函数。
其他提示
尽管这在C#中,但很容易转换: C#初学者帮助,如何将一个值从孩子回到父母表格?
您还可以使用“ my.forms”在vb.net中检索数据
下面从登录名中的文本框中获取文本,并将其放在主要形式的文本框中。
Me.RetrievedDataTextBox.Text = My.Forms.LoginForm.Textbox1.Text
不隶属于 StackOverflow