Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

隠されていたSub new()

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が何もしない空コンストラクタならまだしも、処理が入るのに隠されたら、戸惑ってしまいました。


 

投稿日時 : 2007年1月18日 11:35

Feedback

No comments posted yet.
タイトル
名前
Url
コメント