VB2005で規定のFormは自動的にインスタンス化されています。
(これはこれで嫌ですが)
Application.Designer.vb 内で
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.WindowsApplication1.Form1
End Sub
Form1.Designer.vb内で初期化の部分は
Private Sub InitializeComponent()
Me.SuspendLayout()
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
等となっています。
ところが、InitializeComponent()を明示的にCallしている箇所がありません。
overrideでも無いのに誰に呼ばれてるの?
ステップ実行しても、WindowsApplication1.Form1 内から直接呼ばれているように見えます。
VB2003などでは、明示的に Sub New()内から呼ばれている。
?? そういえば Sub Newがない??
なぜ!!
不思議だ...と思っていて、弄くっているうちに、Sub newを書き加えたら、
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
が現れた!!.
そうなんだ。VBらしい。しかし、基本動作のソースを隠さなくてもいいように思います。
sub newが何もしない空コンストラクタならまだしも、処理が入るのに隠されたら、戸惑ってしまいました。