-2

举个例子:

我有一个LoginForm,当我在文本框中输入我的凭据并单击Go时,它会将我定向到我的 main HomeFormTextbox在此事件中,它将登录表单中用户的当前用户文本存储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该变量是否仍等于用户关闭表单之前的先前值。如果不是,您将如何建议保存。由于所有不必要的文本文件,我不想使用流读取器/写入器。

任何帮助是极大的赞赏!

4

5 回答 5

3

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

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 --> Properties --> Settings 中添加“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

于 2013-05-05T16:07:13.813 回答
2

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

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

于 2013-05-05T16:54:45.897 回答
0

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

根据 MSDN ,Closing 事件在表单关闭时发生。当表单关闭时,对象内创建的所有资源都会被释放,表单也会被释放。

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

您可以通过多种方式保留或保存当前用户信息,以便以后安全访问。这是一个。

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

    dim ouser as new CurrentUser 
    dim frmHomeForm as new HomeForm(ouser)
    frmHomeForm.show 
    msgbox(ouser.Name) 
    

如果您想在用户关闭应用程序后保存该值,那么您可以在项目属性中添加一个设置,并且只需参考 My.Settings.YourSettingName 而不是使用变量来获取和设置用户登录名。

于 2013-05-05T15:49:53.700 回答
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
于 2013-05-05T15:40:00.333 回答
0

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

于 2019-12-30T20:37:35.733 回答