2012-02-17 74 views
0

我有一個VB.NET應用程序設置爲單個實例。當我第二次嘗試啓動應用程序時,它的窗口恢復到正常的窗口狀態,而不是最大化(就像在嘗試第二次啓動之前那樣)。我怎樣才能讓應用程序窗口保持最後狀態?保持單實例應用程序恢復後最大化

感謝您的幫助。

+0

沒有什麼是自動在這裏,超出StartupNextInstance事件。如果您在該事件的事件處理程序中對主窗體執行任何操作(例如恢復它),那麼這就是問題所在。發佈你的代碼,我們無法猜測它的樣子。 – 2012-02-17 13:33:07

+0

對不起,延遲迴復。我根本不使用StartupNextInstance事件。我只是在項目設置中檢查了「單實例應用程序」porperty以啓用單實例。 – Daniel 2012-02-27 16:08:57

回答

0

您可以保存最後的狀態在註冊表或當它改變了一個文件,並應用它,當你加載你的應用程序

設置和獲取註冊表值檢查:

Public Function GetRegistryValue(ByVal KeyName As String, Optional ByVal DefaultValue As Object = Nothing) As Object 
     Dim res As Object = Nothing 
     Try 
      Dim k = My.Computer.Registry.CurrentUser.OpenSubKey("Software\YourApp", True) 
      If k IsNot Nothing Then 
       res = k.GetValue(KeyName, DefaultValue) 
      Else 
       k = My.Computer.Registry.CurrentUser.CreateSubKey("Software\YourApp") 
      End If 
      If k IsNot Nothing Then k.Close() 
     Catch ' ex As Exception 
      'PromptMsg(ex) 
     End Try 
     Return res 
    End Function 

    Public Sub SetRegistryValue(ByVal KeyName As String, ByVal _Value As Object) 
     Try 
      Dim k = My.Computer.Registry.CurrentUser.OpenSubKey("Software\YourApp", True) 
      If k IsNot Nothing Then 
       k.SetValue(KeyName, _Value) 
      Else 
       k = My.Computer.Registry.CurrentUser.CreateSubKey("Software\YourApp") 
       k.SetValue(KeyName, _Value) 
      End If 
      If k IsNot Nothing Then k.Close() 
     Catch ' ex As Exception 
      'PromptMsg(ex) 
     End Try 
    End Sub