[VB.NET] Formのイベント発生順

2010年11月12日

 こんなコードを書いてみる。
 で、デザイナで、TextBox1のTextプロパティに適当な値を、Form1は初期サイズ(300×300)からちょっとサイズを変更(例:300×212)にして、その上で最大化するように設定しておく。

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Debug.Print("Form1_Load")
    End Sub

    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        Debug.Print("Form1_Resize")
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Debug.Print("TextBox1_TextChanged")
    End Sub

End Class

 実行すると結果はこう。

TextBox1_TextChanged
Form1_Resize{Width=300, Height=212}
Form1_Resize{Width=1296, Height=1008}
Form1_Load

 注意点としては、以下

  1. フォームロードよりも先に、コントロールのイベントややResizeイベントが発生する。
  2. リサイズイベントが二回発生する。
  3. 実は、ウインドウが最大化でなく普通で、サイズもデザイナのデフォルトな300×300だと、Form_Resizeイベントは発生しない。

 ソースコードをみると、まあ当然ですよね、といった感じ。

 _
Private Sub InitializeComponent()
    Me.TextBox1 = New System.Windows.Forms.TextBox
    Me.SuspendLayout()
    '
    'TextBox1
    '
    Me.TextBox1.Location = New System.Drawing.Point(36, 21)
    Me.TextBox1.Name = "TextBox1"
    Me.TextBox1.Size = New System.Drawing.Size(191, 19)
    Me.TextBox1.TabIndex = 0
    Me.TextBox1.Text = "test"    ' TextBox1_TextChanged
    '
    'Form1
    '
    Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    Me.ClientSize = New System.Drawing.Size(284, 175)
                                                          ' Form1_Resize{Width=300, Height=212}
    Me.Controls.Add(Me.TextBox1)
    Me.Name = "Form1"
    Me.Text = "Form1"
    Me.WindowState = System.Windows.Forms.FormWindowState.Maximize
                                                          ' Form1_Resize{Width=1296, Height=1008}
    Me.ResumeLayout(False)
    Me.PerformLayout()

End Sub

 つい、最初にくるイベントがForm_Loadだと思いがちなのでメモ。






カテゴリー: Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org