![](/fdotnet/vb6tonet/index/vb6nettitle_l.jpg) |
|
連載
プロフェッショナルVB.NETプログラミング
―― VB 6プログラマーのためのVB.NET入門 ――
第24回 Windowsアプリケーションの仕組み
(株)ピーデー
川俣 晶
2002/11/09
|
単純なWindowsアプリケーション
フォーム上にボタンを1個配置し、そのボタンをクリックしたときにメッセージ・ボックスを表示するプログラムを作成して、VB 6(Visual Basic 6.0)とVB.NET(Visual Basic .NET)の場合を比較してみよう。まずVB 6の場合から。以下のようにフォーム上にボタンを貼り付ける。ボタンを貼り付けたら、そのボタンをダブルクリックしてコードをMsgBox "Clicked!"と入力する。
![](/fdotnet/vb6tonet/vb6tonet24/vb6net24_01_s.gif) |
VB 6でフォームにボタンを配置し、そのボタンをダブルクリックしてコードを入力(コードはサンプル・プログラム1) |
コードは以下のようになる。
1: Private Sub Command1_Click()
2: MsgBox "Clicked!"
3: End Sub
|
|
メッセージ・ボックスを表示するVB 6のサンプル・プログラム1 |
これを実行すると以下のようになる。
![](/fdotnet/vb6tonet/vb6tonet24/vb6net24_02.gif) |
![](/fdotnet/vb6tonet/vb6tonet24/vb6net24_03.gif) |
サンプル・プログラム1の実行画面 |
[Command1]ボタンをクリックすると開くメッセージ・ボックス |
見てのとおり、ソース・コードはたったの3行である。Command1_Clickというプロシージャが、Command1というボタンのクリック・イベントに対応することは容易に推測できる。もしかしたら、Privateといったキーワードの意味が分からないかもしれないが、システムが自動的に挿入してくれるものであるし、無視する気になれば容易に無視できるものである。
では次にVB.NETで同じことをしてみよう。フォームは以下のように同じように作成できる。
![](/fdotnet/vb6tonet/vb6tonet24/vb6net24_04_s.gif) |
VB.NETでフォームにボタンを配置し、そのボタンをダブルクリックしてコードを入力(コードはサンプル・プログラム2) |
次にボタンをダブルクリックして、ボタンのイベント処理メソッドを作成させ、MsgBox( "Clicked!")とイベント処理の内容を入力する。
1: Public Class Form1
2: Inherits System.Windows.Forms.Form
3:
4: …Windows フォーム デザイナで生成されたコード…
5:
6: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
7: MsgBox("Clicked!")
8: End Sub
9: End Class
|
|
メッセージ・ボックスを表示するVB.NETのサンプル・プログラム2 |
これを実行すると以下のようになる。
![](/fdotnet/vb6tonet/vb6tonet24/vb6net24_05.gif) |
![](/fdotnet/vb6tonet/vb6tonet24/vb6net24_06.gif) |
サンプル・プログラム2の実行画面 |
[Button1]ボタンをクリックすると開くメッセージ・ボックス |
見てのとおり、VB 6では3行だったものが、9行になった。しかし、9行ですべてというわけではない。VB.NET上で、「Windows フォーム デザイナで生成されたコード」と書かれた行の左側に見える四角に囲まれた「+」記号をクリックすると、隠されたコードが現れる。参考までにその内容を以下に示す。
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.Location = New System.Drawing.Point(8, 8)
40: Me.Button1.Name = "Button1"
41: Me.Button1.Size = New System.Drawing.Size(192, 32)
42: Me.Button1.TabIndex = 0
43: Me.Button1.Text = "Button1"
44: '
45: 'Form1
46: '
47: Me.AutoScaleBaseSize = New System.Drawing.Size(5, 12)
48: Me.ClientSize = New System.Drawing.Size(208, 53)
49: Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1})
50: Me.Name = "Form1"
51: Me.Text = "Form1"
52: Me.ResumeLayout(False)
53:
54: End Sub
55:
56: #End Region
57:
58: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
59: MsgBox("Clicked!")
60: End Sub
61: End Class
|
|
VB.NETにより自動生成されたコードも含めた、サンプル・プログラム2の全ソース・コード |
見てのとおり、VB 6ではたった3行なのに、VB.NETでは61行にもなっている。単に行数が多いだけではない。イベント処理を行うメソッドの宣言を見比べてほしい。VB 6では、
Private Sub Command1_Click()
となっていて、引数は存在せず、非常にシンプルである。それに対して、VB.NETでは、
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
と非常に長くなっていることが分かるだろう。引数は2個あり、その上、Handles Button1.Clickという見慣れないキーワードも付いている。これらの相違は、VB 6に比べてVB.NETは難しくなったかのような印象を与えるかもしれない。もちろん、自動的に生成されるコードのことは知らなくても構わないという考え方もある。しかし、これらのコードは決して無意味に存在するものではない。意味を知っていれば、さまざまな応用に利用できるものである。今回および次回は、そのための解説を行うことを意図している。
Insider.NET 記事ランキング
本日
月間