表单关闭时是否保存变量?

时间:2013-05-05 15:22:21

标签: vb.net winforms variables

举个例子:

我有一个LoginForm,当我在文本框中输入我的凭据并点击 Go 时,它会指示我到我的主HomeForm。在此活动中,它会将Textbox中的用户Public Variable中的当前用户文本存储在HomeForm中名为 CurrentUser Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Home.CurrentUser = UsernameTextBox.text End Sub 中,因此我的代码就像这样:

HomeForm

当我尝试访问存储在变量中的信息时我没有遇到任何问题只是我想知道用户是否关闭{{1}}该变量是否仍然等于用户关闭之前的值表格。如果不是,你会如何建议保存。由于所有不必要的文本文件,我不想使用流读取器/写入器。

非常感谢任何帮助!

5 个答案:

答案 0 :(得分:3)

如果您将CurrentUser声明为共享,那么即使表单已关闭然后重新打开(假设整个应用程序尚未关闭),它仍将保留该值:

Public Class HomeForm

    Public Shared CurrentUser As String

End Class

使用表单名称访问它:

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
    HomeForm.CurrentUser = UsernameTextBox.text
End Sub

*如果您希望在应用程序运行中保存此值,请在Project中添加“CurrentUser”值 - >属性 - >设置,然后使用如下代码:

Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
    My.Settings.CurrentUser = UsernameTextBox.text
    My.Settings.Save()
End Sub

您可以使用以下任意位置检索值:My.Settings.CurrentUser

答案 1 :(得分:2)

只要您访问HomeForm类的同一个实例,在用户关闭表单后,您仍然可以访问变量值。

这适用于不访问Form类的任何继承属性或方法的任何字段或属性。 Form的这些方法可能依赖于在关闭或处理表单时确实释放的内部资源,而只要实例在范围内,简单的CLR属性将保持不变。

答案 2 :(得分:0)

Dim onearray() As String
Dim i As Integer
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
Home.CurrentUser = UsernameTextBox.text
Home.CurrentUser = onearray(i)
i = i + 1
End Sub

答案 3 :(得分:0)

这取决于您如何从您描述的登录表单中调用您的表单。使用show方法调用它将在用户关闭表单后处理该表单。请参阅以下评论,了解这可能导致的解释和行为。

根据MSDN 表单关闭时会出现The Closing event。关闭表单时,将释放在对象中创建的所有资源,并处理表单。

根据进一步的检查,即使表格被处理,也可以读取一个简单的变量。但是,在我看来,我会通过传入下面概述的对象或变量来保存所需的数据。

有几种方法可以保留或保存当前用户信息,以便以后安全地访问它。这是一个。

  1. 创建一个名为CurrentUser的类,并为其提供可以获取和设置的基本公共属性。
  2. 向HomeForm添加一个新的构造函数,并传递一个新的CurrentUser对象的byref参数引用。
  3. 设置或获取CurrentUser对象所需的任何信息
  4. 当表单关闭时,您将获得传递给表单的CurrentUser对象所需的信息。确保此对象的范围可根据需要提供给您的其他部分。 (即以调用主页表格的形式将其设为公共财产。)

    dim ouser as new CurrentUser 
    dim frmHomeForm as new HomeForm(ouser)
    frmHomeForm.show 
    msgbox(ouser.Name) 
    
  5. 如果要在用户关闭应用程序后保存该值,则可以在“项目属性”中添加设置,只需引用My.Settings.YourSettingName而不是使用变量来获取和设置用户登录名。

答案 4 :(得分:0)

如果要在打开程序变量时再次访问它,则可以使用设置(单击“项目”->“项目设置”->“设置”->“添加设置”),否则可能不会一直保存所有时间,以防万一您将如何使用它们