2017-03-04 65 views
-1

我有一個單獨的表單需要顯示圖像,然後淡出並打開主窗體。當它到達Form1.Show()部分時,它會引發InvalidOperationException。這裏是我的代碼:嘗試顯示錶單後拋出InvalidOperationException

Public Class SPLASH 
    Public Declare Auto Function AnimateWindow Lib "user32" (ByVal hwnd As IntPtr, ByVal time As Integer, ByVal flags As Integer) As Boolean 
    Public Enum AnimateStyles 
     Slide = 262144 
     Activate = 131072 
     Blend = 524288 
     Hide = 65536 
     Center = 16 
     HOR_Positive = 1 
     HOR_Negative = 2 
     VER_Positive = 4 
     VER_Negative = 8 
    End Enum 
    Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     AnimateWindow(Me.Handle, 1000, AnimateStyles.HOR_Negative Or AnimateStyles.Blend) 
     Thread.Sleep(2000) 
     Form1.Show() 
    End Sub 
End Class 

發現我的問題沒有修復在線,我也無法自己修復它。我看文檔,但我認爲我可能需要等待AnimateWindow函數完全結束,但我不知道如何。

+0

沒有實際的錯誤信息,它很難提供幫助。 –

+0

順便說一下'AnimateWindow'的'time'和'flags'參數應該是'UInteger'類型。你不應該使用'Declare Function ... Lib'語句,因爲它只存在於向後兼容性中,而你在網上找到的大多數只與VB6兼容,而不是VB.NET兼容。 [** DllImport **](https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute(v = vs.110).aspx)是這些日子的方式。您可以查找C#聲明並使用在線轉換器轉換它們。 –

回答

-1

找到了答案!

我創建了一個功能

Private Sub Done(ByVal Sender As Object, ByVal Event As System.EventArgs) 
    Dim MainForm As New Form1() 
    MainForm.Show() 
End Sub 

而且

Dim pr As New Process 
     pr.EnableRaisingEvents = True 
     AddHandler pr.Exited, AddressOf Done 

在這之後,我把我平時的代碼之前添加以下代碼。 :)

+0

什麼?如何創建一個永不使用工作的流程? –

+0

答案是我正在使用它:D – Aixiom

相關問題