エントリポイントやら。

過去にいろいろと、パトラッシュスプラッシュがどうとかメインウィンドウがどうとか書いたわけですが。
自分でも書いてみるのが一番♪ってことで書いてみたけれど↓。やり方としてうまくないのはもちろん、実装としてダメかどうかもわからないので、なにかとコメント欄にお気楽にどうぞ。


[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

あぁ、「一般的」が一番知りたい。