所以我正在构建一个基于表单的应用程序,我遇到了在表单之间传递数据的问题。我有一个组合框,根据选择,触发一个新的表单打开,有几个按钮可供选择。选择一个按钮后,表单即会关闭,但我无法将选择结果转移到原始表单。
代码的基本思想就像这样
Public Class frmMain
Public intStore As integer
Private Sub cboSample_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSample.SelectedIndexChanged
Dim selection as Integer
selection = cboSample.SelectedIndex
If selection = -1 Then
Else
Select Case selection
Case 0
frmOne.Show()
Case 1
frmTwo.Show()
End Select
End If
End Sub
End Class
以下是第二个表单代码的示例
Public Class frmOne
Public storage As varStorage
Private Sub btn_Clicked(sender As Object, e As EventArgs) Handles btn.Clicked
storage = New varStorage With {.datastore = 1}
Me.Close()
End Sub
End Class
frmTwo几乎相同,但处理更多选项
我创建的类看起来像这样
Public Class varStorage
Public _dataStore As Integer
Public Property dataStore() As Integer
Get
Return _dataStore
End Get
Set (value As Integer)
_dataStore = value
End Set
End Property
End Class
正如我所说,问题来自于被调用的表单,并且表单关闭,可变数据未被保存。我几乎可以肯定我在某处遗漏了一些代码,但不知道在哪里。任何帮助将不胜感激。
答案 0 :(得分:0)
使用ShowDialog()而不是使用Show()打开另一个表单,将以模态方式打开表单。表单的行为类似于MessageBox。在返回主表单之前,它会等待您回复并关闭此表单。我们可以从这个模态形式中获取一个值,在表格已经关闭的情况下是安全的(因此我们获得的值不会改变)。
另一种方法是制作表格的公共财产。然后,您可以创建Get和Set方法来访问表单对象
Public Class yourFormClass
Public Property Note As String
Get
Return txtNote.Text
End Get
Set(value As String)
End Set
End Property
End Class
然后你可以像
一样使用它dialog = New yourFormClass()
someOtherTextbox.Text = dialog.Note