我正在自学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 返回您想要的值的函数。

其他提示

您还可以使用“ my.forms”在vb.net中检索数据

下面从登录名中的文本框中获取文本,并将其放在主要形式的文本框中。

Me.RetrievedDataTextBox.Text = My.Forms.LoginForm.Textbox1.Text
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top