連載

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

Chapter 07 Windowsアプリケーションの構造

株式会社ピーデー 川俣 晶
2004/05/13
Page1 Page2 Page3

 本記事は、(株)技術評論社が発行する書籍『VB6プログラマーのための入門 Visual Basic .NET 独習講座』の一部分を許可を得て転載したものです。同書籍に関する詳しい情報については、本記事の最後に掲載しています。
 
ボタンの配置により生成されるコード

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

●図7-11 図7-9のフォームにボタンを貼り付け、ボタンの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
リスト7-12 ボタンを貼り付け、そのTextプロパティを変更した場合のInitializeComponentメソッド

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

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

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

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

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

VB6プログラマーのための入門 Visual Basic .NET 独習講座』

 本記事は、(株)技術評論社が発行する書籍『VB6 プログラマーのための 入門 Visual Basic .NET 独習講座』から
許可を得て転載したものです。

【本連載と書籍の関係について 】
 この書籍は、本フォーラムで連載した「連載 プロフェッショナルVB.NETプログラミング」を大幅に加筆修正し、発行されたものです。技術評論社、および著者である川俣晶氏のご好意により、書籍の内容を本フォーラムの連載記事として掲載させていただけることになりました。

技術評論社の解説ページ

ご注文はこちらから
 

 INDEX
  [連載] 改訂版 プロフェッショナルVB.NETプログラミング
  Chapter 07 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メールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH