エントリポイントやら。
過去にいろいろと、パトラッシュスプラッシュがどうとかメインウィンドウがどうとか書いたわけですが。
自分でも書いてみるのが一番♪ってことで書いてみたけれど↓。やり方としてうまくないのはもちろん、実装としてダメかどうかもわからないので、なにかとコメント欄にお気楽にどうぞ。
で、試してみようってな奇特な方のための他のクラスも。
[Visual Basic]
Imports System
Imports System.Threading
Imports System.Windows.Forms
Public Class MyApplicationContext
Inherits ApplicationContext
Private m_splashForm As SplashScreen
Private m_mainForm As MainForm
Private disposed As Boolean = False
Public Sub New()
AddHandler Application.Idle, AddressOf Me.Initialize
Me.m_splashForm = New SplashScreen
MyBase.MainForm = Me.m_splashForm
End Sub
Public Sub Initialize(ByVal sender As Object, ByVal e As EventArgs)
RemoveHandler Application.Idle, AddressOf Me.Initialize
' 時間のかかる処理のつもり。
For i As Integer = 0 To 50
Application.DoEvents()
System.Threading.Thread.Sleep(100)
Next
' MainForm MainForm プロパティの中身を入れ替える。
Me.m_mainForm = New MainForm
MyBase.MainForm = Me.m_mainForm
' スプラッシュウィンドウはポイッ!
If Me.m_splashForm IsNot Nothing AndAlso Not Me.m_splashForm.IsDisposed Then
Me.m_splashForm.Close()
Me.m_splashForm.Dispose()
End If
Me.m_mainForm.Show()
End Sub
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If Me.disposed Then
Exit Sub
End If
If disposing Then
If Me.m_splashForm IsNot Nothing AndAlso Not Me.m_splashForm.IsDisposed Then
Me.m_splashForm.Dispose()
End If
If Me.m_mainForm IsNot Nothing AndAlso Not Me.m_mainForm.IsDisposed Then
Me.m_mainForm.Dispose()
End If
End If
Me.disposed = True
MyBase.Dispose(disposing)
End Sub
End Class
あぁ、「一般的」が一番知りたい。
[Visual Basic]
Imports System
Imports System.Windows.Forms
Public Class Program
Public Shared Sub Main()
Application.EnableVisualStyles()
Using context As New MyApplicationContext
Application.Run(context)
End Using
End Sub
End Class
Public Class SplashScreen
Inherits Form
Public Sub New()
MyBase.New()
Me.Text = "スプラッシュウィンドウです。"
Me.Size = New Size(300, 250)
Me.ShowInTaskbar = False
Me.StartPosition = FormStartPosition.CenterScreen
End Sub
Private Sub SplashScreen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
Me.Hide()
End Sub
End Class
Public Class MainForm
Inherits Form
Public Sub New()
MyBase.New()
Me.Text = "メインウィンドウです。"
Me.Size = New Size(400, 350)
Me.StartPosition = FormStartPosition.CenterScreen
End Sub
Private Sub MainForm_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
Me.Close()
End Sub
End Class