VB.net工作启动屏幕

VB.net工作启动屏幕,vb.net,splash-screen,onload-event,Vb.net,Splash Screen,Onload Event,所以我一直在想如何让我的闪屏工作。当我的程序启动时,我将添加一些检查,我有一个进度条,我正在更新旁边的一个小徽标 我的问题是,我在splash_加载中调用的任何代码都会在我的表单显示之前运行吗?我从Windows窗体>启动屏幕添加了启动屏幕,并在应用程序设置中将其设置为“启动窗体” 现在,我正在执行一个简单的MySQL连接测试,但是我的启动屏幕直到整个sub完成运行才显示出来 splash.vb Public NotInheritable Class splash Private Su

所以我一直在想如何让我的闪屏工作。当我的程序启动时,我将添加一些检查,我有一个进度条,我正在更新旁边的一个小徽标

我的问题是,我在splash_加载中调用的任何代码都会在我的表单显示之前运行吗?我从Windows窗体>启动屏幕添加了启动屏幕,并在应用程序设置中将其设置为“启动窗体”

现在,我正在执行一个简单的MySQL连接测试,但是我的启动屏幕直到整个sub完成运行才显示出来

splash.vb

Public NotInheritable Class splash

    Private Sub splash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        mysql.connectionTest()
    End Sub

End Class
Public Shared Sub connectionTest()
        Using SQLConnection As New MySqlConnection(My.Settings.mtConnStr)
            Try
                SQLConnection.Open()
                MessageBox.Show("Connection OK!")
            Catch ex As Exception
                MsgBox(ex.Message.ToString)
                Application.Exit()
            Finally
                SQLConnection.Close()
            End Try

        End Using
    End Sub
mysql.vb

Public NotInheritable Class splash

    Private Sub splash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        mysql.connectionTest()
    End Sub

End Class
Public Shared Sub connectionTest()
        Using SQLConnection As New MySqlConnection(My.Settings.mtConnStr)
            Try
                SQLConnection.Open()
                MessageBox.Show("Connection OK!")
            Catch ex As Exception
                MsgBox(ex.Message.ToString)
                Application.Exit()
            Finally
                SQLConnection.Close()
            End Try

        End Using
    End Sub

您的问题是您正在Load事件中调用connectionTest。在该事件完成之前,表单不会显示。您可以将这一行代码移到显示的Splash_事件中,它应该在表单加载并可见后处理。

您可以使用线程:Dim t As Thread t=New Thread(AddressOf Me.connectiontest)t.Start()我将其移动到显示的事件中,但现在我只能看到表单背景,在连接测试完成之前,不会显示任何文本/图像。您可能还需要将connectionTest放在单独的线程中,或者使用DoEvents(抖动)。从一个线程中获取一个要用文本/图像等更新的表单不是一件容易的事情。有关事件触发顺序的一些信息,请参阅