2012-01-24 10 views
7

アプリケーションとそのフォームにスプラッシュ画面があります。私はタイマーを持っています。Winformスプラッシュスクリーン - VB.NET - タイマー

Private Sub Splash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    SplashTimer.Start() 

    ' Set application title 
    ' Set Version 
Me.Show() 
     'Me.Refresh() 
     'System.Threading.Thread.Sleep(2000) 
     'Login.ShowDialog() 
     'Login.AllowTransparency = True 
    End Sub 

タイマーの間隔が5000

Private Sub SplashTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SplashTimer.Tick 
     SplashTimer.Stop() 
     Login.Show() 
     Login.AllowTransparency = True 
     Me.Hide() 
    End Sub 

に設定されている私はここにブレークポイントを設定するが、このブレークポイントにヒットしていないようです。私はMe.Refresh()のコメントを外しました

スプラッシュ画面が閉じています。その後、[続行]ボタンが表示されます。あなたは ボタン

MainMenu.Show() 'this form should be shown as this is the main window of the application but it's not showing. 
      Me.Close() 'closes login window 

を続けクリックしたときにウィンドウが現れず、アプリケーションがハングしています。 すべての入力は非常に高く評価されます。

+0

組み込みのSplashScreenフォームを避ける理由はありますか? – LarsTech

+0

これはアプリケーションの現在の状態です。私は組み込みテンプレートを使用することを提案することができます。 – kalls

+0

@LarsTech - それは組み込みのテンプレートです。 – kalls

答えて

13

私は、Visual Studioで提供されるスプラッシュ画面に建て使用することをお勧めします:「プロジェクト」メニューに

移動し、「Windowsフォームを追加」とスプラッシュ画面テンプレートを選択する選択する:

enter image description here

enter image description here

そして、プロジェクトのアプリケーション設定では、スプラッシュスクリーンであることをそのフォームを選択

あなたのスタートアップフォームは、スプラッシュスクリーンフォームではなく、ログインフォームにする必要があります。

更新:

マイプロジェクトのアプリケーション画面から最後の画像上の「ビューのアプリケーションイベント」ボタンをクリックし、MinimumSplashScreenDisplayTime値を設定するには、このコードを追加します

Imports System.Collections.ObjectModel 

Namespace My 
    Partial Friend Class MyApplication 
    Protected Overrides Function OnInitialize(commandLineArgs As ReadOnlyCollection(Of String)) As Boolean 
     Me.MinimumSplashScreenDisplayTime = 5000 
     Return MyBase.OnInitialize(commandLineArgs) 
    End Function 
    End Class 
End Namespace 

あなたのスプラッシュを画面は5000ミリ秒または5秒間画面に残ります。

+0

それはテンプレートが組み込まれています。 – kalls

+0

@kalls私はスプラッシュ画面の遅延を追加する例を使って答えを更新しました。タイマーは必要ありません。 – LarsTech

3

Public Sub Mainメソッドを使用してプログラムにモジュールを追加してみてください。プロジェクトのスタートアップオプションをSub Mainに設定します。

Module Module1 
    Dim frmSplash As SplashScreen1 
    Dim frmLogin As Login 
    Dim frmMain As MainMenu 
    Dim splashTimer As Timer 

    Public Sub Main() 
     splashTimer = New Timer() 
     AddHandler splashTimer.Tick, AddressOf TimerTick 
     splashTimer.Interval = 5000 
     splashTimer.Start() 
     frmSplash = New SplashScreen1 
     frmSplash.ShowDialog() 

     frmLogin = New Login 
     Dim result As DialogResult = frmLogin.ShowDialog 
     If result <> DialogResult.OK Then 
      End 
     End If 

     frmMain = New MainMenu 
     frmMain.ShowDialog() 

    End Sub 
    Private Sub TimerTick(sender As Object, e As EventArgs) 
     splashTimer.Stop() 
     frmSplash.Close() 
    End Sub 
End Module 

プロジェクト設定:あなたは、その後のような何かを行うことができ、私が見つけたもの

+0

私はこのMr. Hallを試したことがありません。前のアプローチが私のために働いた。あなたの答えに感謝します。 – kalls

0

は、Loadイベント/メソッドが完了するまで、そのタイマーイベントが発生しませんです。 私は、起動されたイベント/メソッドにthread.sleepを入れて、それは私に望ましい結果を与えます。 私はいくつかの異なる背景画像でスプラッシュ画面を表示しようとしていますが、これは問題なく動作します。

関連する問題