如何在重新打开表单时保留表单的所有设置

时间:2014-09-05 11:20:23

标签: vb.net forms

我正在使用VB.NET创建一个Windows应用程序,我的应用程序有很多表单。假设有一个主要表单需要用户设置所有参数。设置完成后,用户单击Start按钮,然后会弹出显示所有计算结果的另一个表单。但是在结果表单中,有一个Next Run按钮,它将引导用户返回到初始主窗体以执行另一次运行。基本上它就像一个圆形循环。

以下是我的代码,主要表格

Public Class FormMain

    Private Sub OpenResult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenResult.Click
        Result.Show()
        Me.Close()
    End Sub
End Class

表示结果表格

Public Class Result

    Private Sub OpenMain_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenMain.Click
        Main.Show()
        Me.Close()
    End Sub
End Class

项目shutdown mode已更改为When last form closes

在这种情况下,如果我想在关闭主窗体后保留所有设置,我想要的只是将所有参数保存到变量中,然后在下次将变量分配给相应的参数时重新打开它。还有其他更好的方法可以保留所有设置吗?

我能想到的另一种方式是,我可以将其close代替invisible。但是,当我关闭结果表单时,整个应用程序没有被关闭,因为主表单仍在运行(仅限不可见)。我该如何解决这个问题?

任何输入都会有所帮助,提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果计算页面没有更改起始页面上的设置,您可以将“保存设置”代码放在开始表单的“frmStart_FormClosing”事件中,并将“恢复设置”代码放在“frmStart_Load”事件中。保存大小和位置的示例如下 - 但请确保在尝试保存或读取它们之前创建应用程序设置。即使您正在关闭并重新加载表单而其他表单处于活动状态时,它也会起作用,它不会等待应用程序退出。在这种情况下,设置类型是system.drawing.point和system.drawing.size。

Private Sub frmCash_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  If My.Settings.NewCashWindowSize.Width > 100 And My.Settings.NewCashWindowSize.Height > 100 Then
     Me.Height = My.Settings.NewCashWindowSize.Height
     Me.Width = My.Settings.NewCashWindowSize.Width
  End If
  If My.Settings.NewCashWindowPoint.X > -1 And My.Settings.NewCashWindowPoint.Y > -1 _
      And Screen.GetBounds(Me).Contains(My.Settings.NewCashWindowPoint) Then
     Me.Location = My.Settings.NewCashWindowPoint
  End If
 ...
End Sub

Private Sub frmCash_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  My.Settings.NewCashWindowSize = New System.Drawing.Size(Me.Width, Me.Height)
  My.Settings.NewCashWindowPoint = Me.Location
End Sub