2007年5月28日月曜日

.NET SubMainからスプラッシュウインドウを表示する。

過去記事ログイン画面を表示するを、アプリケーション起動時に、スプラッシュ画面を表示してログイン画面を表示し、メインメニュー画面を表示するように変更します。


Public Class Main


 

    'アプリケーション スレッドに関するコンテキスト情報です。

    Private Shared _MainApplicationContext As ApplicationContext


 

    'アプリケーションエントリーポイント

    Public Shared Sub Main()

        'アプリケーションコンテキストオブジェクトを作成します。

        _MainApplicationContext = New ApplicationContext


 

        'XPスタイルに設定します。

        Application.EnableVisualStyles()


 

        'スプラッシュウィンドウを表示します。

        Dim frmSplash As New SplashForm

        AddHandler frmSplash.FormClosed, AddressOf frmSplash_FormClosed

        _MainApplicationContext.MainForm = frmSplash

        Application.Run(_MainApplicationContext)


 

    End Sub


 

    'スプラッシュウインドウを閉じた時の処理です。

    Private Shared Sub frmSplash_FormClosed(ByVal sender As ObjectByVal e As FormClosedEventArgs)

        'ログイン画面を表示します。

        Dim frmLogin As New Login

        AddHandler frmLogin.FormClosed, AddressOf frmLogin_FormClosed

        _MainApplicationContext.MainForm = frmLogin

        frmLogin.Show()

    End Sub


 

    'ログイン画面を閉じた時の処理です。

    Private Shared Sub frmLogin_FormClosed(ByVal sender As ObjectByVal e As FormClosedEventArgs)

        'メインメニューを表示します。

        If CType(sender, Form).DialogResult = DialogResult.OK Then

            Dim frmMainMenu As New MainMenu

            p_MainApplicationContext.MainForm = frmMainMenu

            frmMainMenu.Show()

        End If

    End Sub


 

End Class


スプラッシュウインドウは3秒間表示するよう設定しました。

Public Class SplashForm


 

    ''' <summary>

    ''' コンストラクタ

    ''' </summary>

    Public Sub New()

        ' この呼び出しは、Windows フォーム デザイナで必要です。

        InitializeComponent()


 

        ' InitializeComponent() 呼び出しの後で初期化を追加します。

        Call Init()

    End Sub


 

    ''' <summary>

    ''' Loadイベントです。

    ''' </summary>

    Private Sub SplashForm_Load(ByVal sender As ObjectByVal e As System.EventArgs) _

    Handles Me.Load

        'タイマーを開始します。

        Dim timer As New Timer

        AddHandler timer.Tick, AddressOf Timer_Tick

        timer.Interval = 3000

        timer.Start()

    End Sub


 

    ''' <summary>

    ''' タイマー終了時のイベントです。

    ''' </summary>

    Private Sub Timer_Tick(ByVal sender As System.ObjectByVal e As System.EventArgs)

        '画面を閉じます。

        Me.Close()

    End Sub


 

    ''' <summary>

    ''' 初期化処理です

    ''' </summary>

    Private Sub Init()

        '画面中央に表示します。

        Me.StartPosition = FormStartPosition.CenterScreen

        'タイトルバーなどを表示しません。

        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None

        'タスクバーに表示しません。

        Me.ShowInTaskbar = False

    End Sub


 

End Class

0 件のコメント: