0

2 つのフォーム 1.「SplashForm」 2.「MainForm」

「SplashForm」プロセスの終了時に「SplashForm」プロセスのバックグラウンド プロセスとして「MainForm」をロードしたい既にロードされているはずの「MainForm」コードを表示したいだけです

VB コード:

Imports System
Imports System.Threading

Public Class MultiThreading
    ' Global declaration 
    Dim mf As New MainForm
    'Thread Declaration
    Dim tm As New Thread(AddressOf LoadProcess)
    Dim ts As New Thread(AddressOf Splashprocess)

    Private Sub Epaper_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Opacity = 0
        tm.Start()
        ts.Start()
    End Sub

    Sub  LoadProcess()
        mf.Show()
        mf.Hide()
    End Sub

    Sub Splashprocess()
        For i As Integer = 0 To 1000
            Me.Opacity += 0.01
        Next
        If Me.Opacity = 1 Then
            mf.Show()
            Me.Hide()
        End If
    End Sub
    End Class
4

1 に答える 1

1

メイン フォームから SplashScreen を呼び出さないのはなぜですか。メイン フォームは、最初は非表示にする必要があります。メイン フォームが読み込まれると、最初にスプラッシュ スクリーンを独立したフォーム (子ではない) として表示してから、メイン フォームの読み込みに進むことができます。すべてのプロセスが完了したら、スプラッシュスクリーンを閉じてメイン フォームを表示します。

したがって、自作スレッドの使用は避けてください。

疑似コードの例を次に示します。

In Main_Form class                // which is invisible
{
    When Main_Form is loaded
    {
        Show SplashScreen

        Proceed on loading everything else

        Hide SplashScreen
        Show Main_Form
    }
}
于 2012-05-19T06:28:43.923 に答える