如何在表单关闭后存储变量以便稍后在另一个表单上使用

时间:2017-06-19 15:55:24

标签: vb.net forms return-value

所以我正在构建一个基于表单的应用程序,我遇到了在表单之间传递数据的问题。我有一个组合框,根据选择,触发一个新的表单打开,有几个按钮可供选择。选择一个按钮后,表单即会关闭,但我无法将选择结果转移到原始表单。

代码的基本思想就像这样

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

正如我所说,问题来自于被调用的表单,并且表单关闭,可变数据未被保存。我几乎可以肯定我在某处遗漏了一些代码,但不知道在哪里。任何帮助将不胜感激。

1 个答案:

答案 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