連載

プロフェッショナルVB.NETプログラミング

第24回 Windowsアプリケーションの仕組み

(株)ピーデー
川俣 晶
2002/11/09

Page1 Page2 Page3

ボタンの配置により生成されるコード

 さて、ここでさらにツールボックスのButtonをダブルクリックして、ボタンを1つ貼り付けてみよう。そして、プロパティ・ウィンドウから、Textプロパティに「Sample」と入力してみる。

前ページのフォームにボタンを貼り付け、ボタンのTextプロパティに「Sample」と入力

 この修正後に、ソース・コードは以下のように変化した。

  1: Public Class Form1
  2:   Inherits System.Windows.Forms.Form
  3:
  4: #Region " Windows フォーム デザイナで生成されたコード "
  5:
  6:   Public Sub New()
  7:     MyBase.New()
  8:
  9:     ' この呼び出しは Windows フォーム デザイナで必要です。
 10:     InitializeComponent()
 11:
 12:     ' InitializeComponent() 呼び出しの後に初期化を追加します。
 13:
 14:   End Sub
 15:
 16:   ' Form は dispose をオーバーライドしてコンポーネント一覧を消去します。
 17:   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
 18:     If disposing Then
 19:       If Not (components Is Nothing) Then
 20:         components.Dispose()
 21:       End If
 22:     End If
 23:     MyBase.Dispose(disposing)
 24:   End Sub
 25:
 26:   ' Windows フォーム デザイナで必要です。
 27:   Private components As System.ComponentModel.IContainer
 28:
 29:   ' メモ : 以下のプロシージャは、Windows フォーム デザイナで必要です。
 30:   ' Windows フォーム デザイナを使って変更してください。
 31:   ' コード エディタは使用しないでください。
 32:   Friend WithEvents Button1 As System.Windows.Forms.Button
 33:   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
 34:     Me.Button1 = New System.Windows.Forms.Button()
 35:     Me.SuspendLayout()
 36:     '
 37:     'Button1
 38:     '
 39:     Me.Button1.Name = "Button1"
 40:     Me.Button1.TabIndex = 0
 41:     Me.Button1.Text = "Sample"
 42:     '
 43:     'Form1
 44:     '
 45:     Me.AutoScaleBaseSize = New System.Drawing.Size(5, 12)
 46:     Me.BackColor = System.Drawing.Color.Yellow
 47:     Me.ClientSize = New System.Drawing.Size(292, 273)
 48:     Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1})
 49:     Me.Name = "Form1"
 50:     Me.Text = "VB.NET Sample"
 51:     Me.ResumeLayout(False)
 52:
 53:   End Sub
 54:
 55: #End Region
 56:
 57: End Class
ボタンを貼り付け、そのTextプロパティを変更した場合のInitializeComponentメソッド

 ボタンが増えたことで、さらにコードが増えたことが分かるだろう。32行目は、ボタンのインスタンスを保持する変数である。WithEventsキーワードが付加されているが、これは、Handlesキーワード(詳細は追って解説)によってイベント処理を行う対象に付けるものである。WithEventsキーワードを付けなければHandlesキーワードでイベント処理を行うことができない。34行目は、ボタン・コントロールのインスタンスの作成を行っている。VB 6では、動的にコントロールを作成するテクニックを使う場合を除き、コントロールは自動的に生成された。しかし、VB.NETでは必ず明示的に作成しなければならない構造になっている。もちろん、フォーム・デザイナを使えば自動的に作成するコードが生成されるので、通常見えないソース・コードまで意識しないのなら、VB 6と同じということもできる。

 次に35行目のSuspendLayoutメソッドと、51行目のResumeLayoutメソッドだが、これはコントロールのレイアウト変更を通知するイベントを抑止する効能がある。つまり、35行目と51行目の間のコードはレイアウト変更関連のイベントを発生させない。コントロールの初期設定を行っている最中に、いちいちイベントを起こさないということである。

 39〜41行目はボタンのプロパティの設定である。これについては、細かく説明する必要はないだろう。

 さて、フォームに関しても、48行目に新規に挿入されたコードがある。これは、確かに、ボタンがフォームの上に配置されたコントロールであることを設定するために追加されたコードである。このコードがなければ、ボタンはフォーム上に配置された存在とは認知されないことになる。

 これらの知識は、知らなければ知らないままでも利用することができる。しかし、知っていれば、より高度な使いこなしの役に立つだろう。

次回予告

 今回はボタンを押したときに必要となるイベント処理については詳しく触れなかった。次回では、このイベントと、イベントを処理するイベント・ハンドラについて解説する予定だ。End of Article


 INDEX
  連載 プロフェッショナルVB.NETプログラミング
  第24回 Windowsアプリケーションの仕組み
    1.単純なWindowsアプリケーション
    2.フォーム・デザイナの役割と生成されたコード
  3.ボタンの配置により生成されるコード
 
「プロフェッショナルVB.NETプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間