<Attention>
その1に載せたコードを前提に書いています。
</Attention>
前回のエントリで Form1.Designer.vb は Form1 クラスの部分定義が書かれているファイルですよ~ってことは分かりました。
じゃ、中に書かれている内容を順番に見てみましょ♪(さくさくっとね。)
まずはこれ↓。
Inherits System.Windows.Forms.Form
MSDN:Inherits ステートメント(http://msdn2.microsoft.com/ja-jp/library/1yk8s7sk(VS.80).aspx)より。
現在のクラスまたはインターフェイスの属性、変数、プロパティ、プロシージャ、およびイベントを別のクラスまたは一連のインターフェイスから継承します。
端折ると、
あるクラスからその実装を継承するのだ!
ってことです(だめだな、これは。)。今回の Form1 クラスでいうと System.Windows.Forms.Form を継承しておいて、その機能を拡張して
Form1 クラスをつくりますからよろしく!ってことです。1からウィンドウを表示したりとかの実装はもう出来上がってるやつがあるし、めんどくさいからそれ使うわ♪ってことですね。(たとえば、Form1
に何も書かなくても Text プロパティ や Show メソッド があります。これは Form クラスが実装してくれているからですね。)
ちなみにこのステートメント、C♯だとForm1.cs のほうに記述されています。ということは、
また隠し事か!orz
ちょっぴり寂しい。
・・・じゃ次はこれ↓
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Text = "Form1"
End Sub
InitializeComponent メソッドですね。指定されている属性は DebuggerStepThroughAttribute です。これについては
@IT : デバッグ時にメソッドをステップイン実行しないようにするには? (http://www.atmarkit.co.jp/fdotnet/dotnettips/362stepthrough/stepthrough.html)
を見ていただくとお分かりいただけるかと思います。つまり
ステップイン実行しててもこのメソッド(クラスも指定可)はステップインさせないぞ!
ってことです。ちなみにこの属性、C♯だとInitializeComponent メソッドには付いていません。ということは、
また隠し事か!orz
ま、ここステップインされても・・・まぁめんどくさいこともないこともないわけですが、ちょっぴり寂しい。
InitializeComponent メソッドの中身ですが、そのメソッド名からして 'コンポーネントを初期化し' ます。試しに Form1 にボタンをひとつ置いてみていただけると分かるかと思います。こんな感じ↓(新たにButton1
という変数も宣言されていますね。)
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
Me.Button1.Location = New System.Drawing.Point(178, 32)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(75, 23)
Me.Button1.TabIndex = 0
Me.Button1.Text = "Button1"
Me.Button1.UseVisualStyleBackColor = True
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(292, 269)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
Friend WithEvents Button1 As System.Windows.Forms.Button
ちなみに
Private components As System.ComponentModel.IContainer
この components という変数。ボタンを置く前のコードでは InitializeComponent メソッド内部で
components = New System.ComponentModel.Container()
ちゃんと初期化されていますが、ボタンを置くとなぜかそのコードが消えてます。あら不思議。(いやホントに不思議。)
というわけで、Form1 は Form クラスから継承されていてInitializeComponent メソッドはボタンやらは初期化していますよ~ってお話でした。
次回は、その components という変数 と Dispose メソッドについての内容になりそうです。