Visual Basic 6.0 と .NET のコントロールの相違点

目的

  • Visual Basic 6.0 ActiveX コントロールのうち、.NET に等価なものがあるのはどのコントロールなのかを理解する
  • .NET コントロールで変更されたプロパティについて学ぶ
  • .NET で新しく追加されたコントロールについて学ぶ

前提

このドキュメントを活用するためには、以下の知識が必要となります。

  • ActiveX コントロールについての理解。
  • Visual Basic 6.0 と ActiveX コントロールを使って Windows アプリケーションを作成した経験。

目次

標準コントロールの違い
.NET の新しいコントロール
プロパティの変更点
コントロールの一般的な変更点
標準コントロールの相違点
要約

標準コントロールの違い

Microsoft .NET コントロールは、他のクラスの階層から作成されるという点で、内部的には ActiveX コントロールと大きく異なっています。 これらの .NET コントロールの継承元となっているクラスは複数存在しており、それぞれが実際のコントロールに近づくに従って機能を改良し、より多くの機能を追加しています。 コントロールのクラス階層のトップには Control クラスがあります。 ただし、独自のコントロールを作成するときには、おそらく UserControl クラスから継承を行うことになるでしょう。 UserControl クラスは、開発者に必要なプロパティとイベントを含んでおり、構成コントロールの描画処理をすべて自動的に行ってくれるからです。

.NET でユーザー インターフェイスの作成を始めた人は、Visual Basic 6.0 にあったコントロールの多くがなくなっていたり、名前が変更されていたりすることに気づくでしょう。この記事では、Visual Basic 6.0 の標準コントロールと、それらと等価な .NET コントロールの概要を示します。また、このドキュメントの後の方では、各コントロールのプロパティ名の具体的な違いについて説明します。これらのコントロールは、プロパティの変更と一部のイベント名の変更を除けば、Visual Basic 6.0 とほとんど同じ動作をします。

表 1 は、Visual Basic 6.0 ツールボックスにある標準コントロールと、それと等価な.NET コントロールを示しています。この表はすべての .NET コントロールを示しているわけではありませんが、.NET 用のコントロールにどのような変更が加えられたのかがわかるでしょう。

Visual Basic 6.0 の標準コントロール 等価な .NET コントロール
Picture PictureBox
Label Label
TextBox TextBox
Frame GroupBox
CommandButton Button
CheckBox Button
OptionButton RadioButton
ListBox ListBox
ComboBox ComboBox
HScrollBar HScrollBar
VScrollBar VScrollBar
Timer Timer
DriveListBox 無し。OpenFileDialog コントロールに置き換え。
DirListBox 無し。OpenFileDialog コントロールに置き換え。
FileListBox 無し。OpenFileDialog コントロールに置き換え。
Shape 無し。シェイプの描画には .NET CLR のクラスを使用します。
Line 無し。シェイプの描画には .NET CLR のクラスを使用します。
Image 無し。1 つの画像の表示には PictureBox コントロールを使用します。
Data 無し。.NET におけるデータ バインディングは、Visual Basic 6.0 とはまったく異なる形で処理されます。
OLE 無し。
ImageList ImageList

表 1. 一部のコントロールは、.NET で名前が変更されている。

.NET の新しいコントロール

標準コントロールに加えて、.NET にはまったく新しいコントロールが追加されています。これらのコントロールの中には、Visual Basic 6.0 に等価なコントロールがあるものもあれば、新しいものもあります。次に、.NET で使用できる新しいコントロールの例をいくつか示します。

新しいコントロール 説明
LinkLabel Windows フォーム上にハイパーリンクを配置することができます。これはブラウザ内で使用するハイパーリンクと同じ動作を持ちます。
MainMenu フォーム上のメニューの作成に使用します。
DataGrid ADO.NET データセットのデータを表形式で表示します。これは Visual Basic 6.0 の FlexGrid コントロールによく似ていますが、多数の新しい機能が追加されています。
CheckedListBox 各項目の横のチェックボックスを使って、リストから 1 つまたは複数の項目を選択できるようにしている強化版の ListBox。Visual Basic 6.0 では、これは Style プロパティを 1-Checked に設定することによって実現していました。
TabControl Visual Basic 6.0 の TabStrip コントロールと SSTab コントロールの機能を組み合わせたもの。
Splitter 2 つのペインを持つエクスプローラ式のインターフェイスを作成することができます。
DomainUpDown テキスト ボックスを上下の矢印と組み合わせたもの。コンボ ボックスと同じように、リストには任意のタイプのデータを格納することができ、ユーザーは上下の矢印をクリックすることでデータをスクロールすることができます。
TrackBar Visual Basic 6.0 の Slider コントロールによく似ています。
HelpProvider フォームのトレイにこのコントロールを追加すると、フォーム上の各コントロールに HelpString、HelpTopic、および ShowHelp プロパティが追加されます。
ToolTip フォームのトレイにこのコントロールを追加すると、フォーム上の各コントロールに ToolTip プロパティが追加されます。
NotifyIcon 一般には、Windows サービスを作成するときに、タスク バーのシステム トレイに表示されるアイコンを設定するために使用されます。このアイコンがクリックされたら、メニューを表示したり、そのプログラム中の任意のフォームを表示することができます。
ContextMenu フォーム上の任意のコントロールに割り当てることができるメニューを追加します。
OpenFileDialog OpenFile ダイアログ ボックスを表示します。このコントロールは、Visual Basic 6.0 では CommonDialog コントロールのメソッドとして実現されていました。
SaveFileDialog SaveFile ダイアログ ボックスを表示します。このコントロールは、Visual Basic 6.0 では CommonDialog コントロールのメソッドとして実現されていました。
FontDialog Font ダイアログ ボックスを表示します。このコントロールは、Visual Basic 6.0 では CommonDialog コントロールのメソッドとして実現されていました。
ColorDialog Color ダイアログ ボックスを表示します。このコントロールは、Visual Basic 6.0 では CommonDialog コントロールのメソッドとして実現されていました。
PrintDialog Print ダイアログ ボックスを表示します。このコントロールは、Visual Basic 6.0 では CommonDialog コントロールのメソッドとして実現されていました。
PrintPreviewDialog PrintPreviewControl と組み合わせて使用されます。
PrintPreviewControl プリンタの代わりにプレビュー ウィンドウに印刷結果を表示することができます。
ErrorProvider このコントロールをフォームのトレイに追加すると、フォーム上の各コントロールに Error、IconAlignment、および IconPadding プロパティが追加されます。
PrintDocument 他のクラスとともに、ドキュメントをプリンタに送信します。
PageSetupDialog ユーザーが余白や紙の向きなどの設定を操作するためのダイアログ ボックスを表示します。

表 2. ユーザー インターフェイスの作成に利用できるさまざまな標準コントロールが用意されている。

プロパティの変更点

コントロール間でプロパティの名前に一貫性を持たせ、また名前をわかりやすくするために、多くのプロパティ名が Visual Basic 6.0 から変更されています。一部のプロパティは、不要になったため (DDE プロパティなど)、またはそれらが実行していた機能が .NET の他のコントロールやメソッドに置き換えられたために削除されています。

削除された共通プロパティ

Visual Basic 6.0 のすべてのコントロールに共通するプロパティがいくつかありました。これらのプロパティの多くは、無意味になったか、その機能がまったく異なる形で処理されるようになったために、.NET では削除されています。表 3 は、.NET では削除された、Visual Basic 6.0 の共通プロパティを示しています。このドキュメントの後の方で、これらと等価なプロパティについて、またはこれらが削除された理由について説明しています。

削除されたプロパティ
DragIcon
DragMode
Index
LinkItem
LinkMode
LinkTimeout
LinkTopic
MouseIcon
MousePointer
OLEDragMode
OLEDropMode

表 3. .NET コントロールから削除されたプロパティ

新しい共通プロパティ

どのコントロールでも、同じプロパティのセットが必要になることがよくあります。Visual Basic 6.0 と同様に、.NET にもすべてのコントロールに共通するプロパティのセットが用意されています。表 4 は、これらの新しいプロパティの名前と機能を示しています。

新しいプロパティ 説明
AccessibleDescription Narrator アクセサリが読み込む説明文。Narrator は視覚に障害のある人が使用するコミュニケーション ツールで、コンピュータの画面上の単語をコンピュータのスピーカーを通して読み上げます。これはほとんどの Windows システム上に用意されており、[スタート] - [プログラム] - [アクセサリ] - [ユーザー補助] - [Narrator] で呼び出すことができます。このツールは、画面上のマウスの位置にある単語を読み上げます。この説明文を用意しておくと、Narrator ツールはユーザーに対して説明文を読み上げます。
AccessibleName Narrator アクセサリが報告するコントロールの名前。
AccessibleRole Narrator アクセサリがユーザーに報告する役割。
AllowDrop コントロールがドラッグ アンド ドロップ通知を受け付けるかどうかを決定します。
Anchor コントロールがフォーム上のどの位置にアンカーリングされるかを決定します。任意のアンカー スタイルを選択することができます。
ContextMenu このプロパティを ContextMenu コントロールの名前に設定すると、右マウス ボタンでこのコントロールがクリックされたときに、メニューが自動的に表示されるようになります。
Dock コントロールがフォーム上のどの位置にドッキングされるかを決定します。コントロールをドッキングすると、コントロールは同じ位置にドッキングされたまま、フォームに合わせて拡大/縮小します。
Locked True に設定されている場合、このコントロールはデザイン時に移動不可能となります。
Modifiers コントロールのスコープを決定します。デフォルトで、.NET ではすべてのコントロールが Friend となります。これまでのバージョンの Visual Basic では、すべてのコントロールが Public でした。.NET では、Private、Protected、Friend、または Public のいずれかを選択することができます。

表 4. .NET のすべてのコントロールに共通する新しいプロパティが多数用意されている。

変更されたプロパティ

Visual Basic 6.0 には、すべてのコントロールが持たなくてはならないプロパティが 4 つありました。これらは Left、Top、Width、および Height です。これらのプロパティは現在も使用できますが、Location と Size という新しい構造体を使用することが推奨されます。表 5 は、これらの新しいプロパティの内容と、そこに含まれている構造体について説明しています。

プロパティ 説明
Location このコントロールが置かれている位置の X および Y 座標を与える Point 構造体。これまでのバージョンの Visual Basic では、これは Left および Top プロパティを使って設定されていました。
Size コントロールの幅と高さを与える Size 構造体。これまでのバージョンの Visual Basic では、これは Width および Height プロパティを使って設定されていました。

表 5. .NET コントロールの位置と全体的なサイズは Location と Size によって制御されるようになった。

コントロールの一般的な変更点

.NET では、Visual Basic 6.0 と比べて、コントロールの動作にさまざまな変更が加えられています。次の 9 つのセクションでは、これらの変更点と、.NET における開発に与える影響について説明します。

.NET コントロールの作成

.NET における Visual Basic 6.0 からの最も大きな変更点の 1 つは、フォーム上のコントロールをインスタンス作成するコードが目に見えるようになったということです。これまでは、このコードは ActiveX コントロールと Visual Basic ランタイムの中に隠されていました。現在では、フォームの背後のコードの #Region セクションを展開することで、このコードを見ることができます。次に、1 つのラベル、1 つのテキスト ボックス、および 1 つのボタン コントロールを持つサンプル フォームの例を示します。

Public Class frmTest
   Inherits System.Windows.Forms.Form

#Region "Windows Form Designer generated code "

   Public Sub New()
     MyBase.New()

     'この呼び出しは Windows フォーム デザイナのために必要
     InitializeComponent()

     'InitializeComponent() 呼び出しの後に初期化作業を追加する

   End Sub

   'フォームは配列をオーバーライドして、コンポーネント リストをクリーンアップする
   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
     If disposing Then
       If Not (components Is Nothing) Then
         components.Dispose()
       End If
     End If
     MyBase.Dispose(disposing)
   End Sub
   Friend WithEvents Label1 As System.Windows.Forms.Label
   Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
   Friend WithEvents Button1 As System.Windows.Forms.Button

   'Windows フォーム デザイナのために必要
   Private components As System.ComponentModel.Container

   '注意: 以下のプロシージャは Windows フォーム デザイナのために必要
   '変更を必要とするときは、Windows フォーム デザイナを使って変更する
   'コード エディタを使って変更してはいけない

   <System.Diagnostics.DebuggerStepThrough()> 
     Private Sub InitializeComponent()
        Me.Label1 = New System.Windows.Forms.Label()
        Me.TextBox1 = New System.Windows.Forms.TextBox()
        Me.Button1 = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        '
        'Label1
        '
        Me.Label1.Name = "Label1"
        Me.Label1.TabIndex = 0
        Me.Label1.Text = "Label1"
        '
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(8, 80)
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.TabIndex = 1
        Me.TextBox1.Text = "TextBox1"
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(112, 32)>
        Me.Button1.Name = "Button1"
        Me.Button1.TabIndex = 2
        Me.Button1.Text = "Button1"
        '
        'frmTest
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(392, 250)
        Me.Controls.AddRange(New System.Windows.Forms.Control() 
        {Me.Button1, Me.TextBox1, Me.Label1})
        Me.HelpButton = True
        Me.MaximizeBox = False
        Me.MinimizeBox = False
        Me.Name = "frmTest"
        Me.Text = "frmTest"
        Me.ResumeLayout(False)

   End Sub

#End Region

End Class

この例からわかるように、個々のコントロールが作成された後に、Location や Size などのプロパティが初期化されます。Visual Studio デザイナのプロパティ ウィンドウで設定したその他のプロパティも、このセクションにコードとして追加されます。望むならば、ユーザー インターフェイスをメモ帳のみで設計することも可能になったのです!

注: この #Region エリアのコードを変更してはなりません。このコードは、フォームのコントロールを追加または削除するたびに、Visual Studio 環境によって自動的に作成され、破棄されます。

アンカーリング

多くの Visual Basic 開発者は、フォームの右下の隅にコントロールをアンカーリングするためのコードを嫌になるほど書いてきたことでしょう。ユーザーがフォームのサイズを変更できるようにしたいが、フォーム上の特定のコントロールを、フォームの下辺および (または) 右辺を基準として一定の位置に保ちたい場合には、このようなコードが必要となります。そのコードは捨ててください ! Visual Studio .NET は Anchor プロパティという単純なソリューションを提供しています。このプロパティにより、コントロールをコンテナの任意の辺またはすべての辺にアンカーリングすることができます。下辺および (または) 右辺にアンカーリングすると、コントロールはフォームのサイズが変更されたときに自動的に移動するようになります。上辺および (または) 左辺にアンカーリングすると、コントロールはフォームのサイズが変更されたときに自動的にサイズが変わるようになります。この新しいプロパティを使って実験し、コントロールに与える影響を確認してください。

A typical data entry screen
図 1. 典型的なデータ入力画面

図 1 のような典型的なデータ入力フォームでは、[Add]、[Update]、[Delete]、および[Clear] の各ボタンを、フォームの右下隅に固定するとよいでしょう。このためには、ボタンを強調表示し、Anchor プロパティを BottomRight に設定します。[プロパティ] ウィンドウで Anchor プロパティを探し、ドロップダウン矢印をクリックします。図 2 のように、上と左のバーを選択解除し、下と右のバーを選択します。

The Properties dialog box with the Anchor dropdown active
図 2. Anchor ドロップダウンがアクティブになっている [プロパティ] ダイアログ ボックス

Anchor プロパティを使用すると、コードを 1 行も書かずに、コントロールをフォームの辺にアンカーリングすることができます。グラフィック メニューからオプションを選択することで、希望の動作を選択します。コード内では、TopLeft、BottomRight、Left、Right、Top、Bottom、TopLeftBottom、および All などの定数を使ってプロパティの値を設定できます。

ドッキング

Dock プロパティは、コントロールをコンテナの任意の辺にドッキングできるという点で、Anchor プロパティに似ています。コントロールをドッキングすると、そのコントロールはフォームとともに拡大、縮小しますが、ドッキング先の辺は固定されます。コントロールをフォームのすべての辺にドッキングすれば、コントロールはフォーム全体を覆うことになります。

コントロール配列はどうなったか?

Visual Basic 6.0 では、複数のコントロールの Name プロパティを同じ値に設定することで、コントロール配列を作成することができました。このとき、Index プロパティは個々のコントロールで異なる数値に設定されました。この Index 値は、そのコントロール グループのすべてのイベントに渡され、開発者はどのコントロールがイベントを発生させたのかを判断することができます。このように、Visual Basic 6.0 におけるコントロール配列の使用方法の 1 つとして、1 つのイベント プロシージャで複数のコントロールのコードを処理できるようにするというものがありました。

Visual Basic .NET では、コントロール配列の扱いは大きく異なっています。1 つのプロシージャで、複数のコントロールのイベントを処理する方法は 2 つあります。.NET クラスに組み込みの AddHandler プロシージャを使うものと、プロシージャの Handles 句を使うものです。

フォームの下部に置かれたすべてのボタンを、1 つの Click イベントで処理するには、いずれかのボタンをダブルクリックして、コード ウィンドウに Click イベント プロシージャを生成させます。その後、そのプロシージャに処理を行わせるためのコードを入力します。

Private Sub btnSave_Click( _
   ByVal sender As Object, _
   ByVal e As System.EventArgs) _
   Handles btnSave.Click, btnNew.Click, btnDelete.Click
    MessageBox.Show("A Click event")
End Sub

上のコードは大した機能は持っていませんが、複数のコントロールが同じプロシージャを呼び出す方法を示しています。コントロール配列を作成する代わりに、イベント ハンドラを作成し、複数のコントロールからの 1 つまたは複数のイベントに反応するように指定します。

Handles 句以外にも、AddHandler ステートメントを使って、1 つのプロシージャで複数のコントロールのイベントを処理させることができます。このステートメントでは、呼び出すプロシージャを指定して、任意のイベントにイベント ハンドラを追加することができます。イベントにイベント ハンドラを追加することになるので、一連のイベント ハンドラに同じイベントを処理させることが可能です。つまり、実質的には、イベントに反応してどのプロシージャを呼び出すべきかをコントロールに指示することができます。イベント処理をこの新しいプロシージャに委譲するということから、このプロシージャはデリゲートと呼ばれます。

この委譲を実現するには、既存のコードの TODO コメントの下の、フォームの New メソッドに、次のようなコードを追加します。

AddHandler btnDelete.Click, AddressOf ButtonClick
AddHandler btnNew.Click, AddressOf ButtonClick

上のコードを追加すると、[New]、[Delete]、または [Save] ボタンをクリックしたときに、ButtonClick イベント プロシージャが呼び出されるようになります。もちろん、このイベント プロシージャがどのボタンから呼び出されたのかを判定する必要があります。この目的には、すべてのイベント プロシージャに渡される sender パラメータが利用できます。sender は、このイベントを発生させたオブジェクトを表しています。したがって、次のようなコードを書くことができます。

Private Sub ButtonClick( _
   ByVal sender As Object, _
   ByVal e As System.EventArgs)
      If sender Is btnNew Then
         MessageBox.Show("New button pressed")
      ElseIf sender Is btnSave Then
         MessageBox.Show("Save button pressed")
      ElseIf sender Is btnDelete Then
         MessageBox.Show("Delete button pressed")
      End If
End Sub

コントロール配列を設定するこの 2 つの方法には、真の違いはないので、どちらを使っても同じです。

規定値およびキャンセル ボタン

これまでのバージョンの Visual Basic では、CommandButton コントロールの Default プロパティを True に設定することで、Enter キーが押されたときに、このボタンの Click イベントを呼び出すよう Visual Basic に指示することができました。また、別の CommandButton コントロールの Cancel プロパティを設定することで、Esc キーが押されたときに、このボタンの Click イベントを呼び出すよう Visual Basic に指示しました。その後、個々の Click イベント プロシージャについて、フォームを閉じ、このフォームを呼び出したルーチンに対してどのボタンが押されたのかを通知するために、何らかのプロパティを設定するコードを書く必要がありました。

現在では、個々のボタン用のコードをまったく書かずに、これと同じことを実現することができます。このためには、各ボタンの DialogResult プロパティを特定の値に設定します。たとえば、フォーム上に [OK] ボタンと [Cancel] ボタンがある場合には、これらのボタンの DialogResult をそれぞれ OK と Cancel に設定します。その後、フォームの AcceptButton プロパティを OK ボタンの名前に設定し、フォームの CancelButton プロパティを Cancel ボタンの名前に設定します。

これらのプロパティを設定した後に、フォームを ShowDialog メソッドを使って表示すると、これらのボタンはフォームを自動的に閉じるようになります。その後、フォームの DialogResult プロパティは、押されたボタンの DialogResult 値に設定されます。この方法で、呼び出し側のプログラムから、どのボタンがフォームを閉じたのかを判定することができます。

状況依存のメニュー

Windows アプリケーションでは、コントロールが右マウス ボタンでクリックされたときに表示される特殊なメニューを割り当てなくてはならないことがあります。これを Visual Basic 6.0 で実現するためには、Visible プロパティを False に設定したメニューを作成し、このコントロールの Click イベント プロシージャの中に、隠されたメニューを表示するコードを書く必要がありました。

.NET では、ContextMenu コントロールを使って、フォームの MainMenu からは完全に独立したメニューを作成することができます。このメニューをコントロールに割り当てるには、単にコントロールの ContextMenu プロパティを設定します。追加のコードを書く必要はありません。

フォーム上のコントロールのロック

ユーザー インターフェイスを慎重に作成した後に、コードを追加するためにクリックしたときに、コントロールが間違って動いてしまうのを避けたいことがあります。Visual Basic 6.0 では、フォーム上のすべてのコントロールをロックするオプションがありました。これは便利な機能でしたが、大きなフォームの小さなセクションだけが未完成であるような場合には問題となりました。そのセクションの作業をするだけのために、すべてのコントロールをアンロックする必要があったのです。その際に、コントロールが誤って動かされてしまう危険性がありました。

.NET では、コントロールをグループとして、または個別にロックすることができます。これは、大きなフォーム上で複数のコントロール セットを扱っているときに非常に有効です。

MDI フォーム上のコントロール

Visual Basic 6.0 では、MDI フォーム上に配置できるコントロールは、Align プロパティを持つものに限られていました。.NET では、任意のコントロールを MDI フォーム上に配置することができます。

DDE の削除

ダイナミック データ エクスチェンジ (DDE) は、.NET 言語ではテクノロジとしてサポートされなくなりました。プログラム間で通信を行う手段は他にいくつも用意されているので、このテクノロジはもはや不要になっています。その結果、すべてのコントロールから、Link というプレフィックスを持つプロパティがすべて削除されています。

標準コントロールの相違点

このドキュメントで前に述べたように、多くの標準コントロールに、さまざまなプロパティの変更が加えられています。以下に、個々の標準コントロールの変更されたプロパティと、新たに追加されたプロパティを示します。以下の表に示した相違点は、各コントロールに固有のプロパティの変更点です。前に述べた共通プロパティも変更されていますが、ここでは省略しています。

ラベル コントロール

新しいプロパティ 説明
Text Visual Basic 6.0 では、このプロパティは Caption という名前でした。

テキスト ボックス コントロール

新しいプロパティ 説明
AcceptsReturn True に設定されている場合、複数行テキスト ボックスは CRLF を有効な文字として受け付けます。CRLF がテキスト ボックスに入力されるのを防ぐには、このプロパティを False に設定します。
AcceptsTab True に設定されている場合、複数行テキスト ボックスは Tab を有効な文字として受け付けます。Tab がテキスト ボックスに入力されるのを防ぐには、このプロパティを False に設定します。
CharacterCasing ユーザーがこのコントロールに入力する文字の大文字小文字の使い分けを区別します。オプションは Normal、UpperCase、および LowerCase です。
ReadOnly ユーザーがこのテキスト ボックスに入力を行えないようにしたい場合には、True に設定します。このプロパティは、以前の Locked プロパティと同じ機能を持ちます。
TextAlign ユーザーがテキスト エリアにデータを入力するときのテキストの位置揃えを制御します。このプロパティは Left、Right、または Center に設定することができます。

ボタン コントロール

新しいプロパティ 説明
BackGroundImage ボタンの背景イメージを設定することができます。また、このイメージの上にテキストを追加することもできます。
DialogResult フォームがダイアログとして呼び出されたときに返される結果を設定します。ユーザーがこのボタンを押すと、このプロパティの中の値が返されます。
FlatStyle ボタンの外見を変更します。オプションには Flat、PopUp、Standard、および System があります。Windows XP を使用している場合には、XP のテーマを使用することができるので、つねに System を使用するべきです。
Image このボタンに表示するイメージ。
ImageAlign ボタン内のイメージを配置する場所。
ImageIndex ImageList プロパティで設定された ImageList コントロールの中のイメージのインデックス番号。
ImageList ImageIndex プロパティを使ってイメージを取得する ImageList コントロールの名前。
Text Visual Basic 6.0 では、このプロパティは Caption と呼ばれていました。
TextAlign ボタンの中に表示されるテキストの位置揃えを制御します。オプションとしては Left、Right、Center、Middle、Top、Bottom、およびこれらの組み合わせが指定できます。

チェック ボックス コントロール

新しいプロパティ 説明
AutoCheck True に設定されている場合、コントロール上の任意の場所をクリックすると、状態が Checked から UnChecked に変更されます。
BackGroundImage チェック ボックス コントロールの背景イメージを設定することができます。また、このイメージの上にテキストを追加することもできます。
CheckAlign チェック ボックス コントロールの位置を決定します。Visual Basic 6.0 では、位置をチェック ボックス内のテキストの左または右に制限していました。現在は、左、右、上、下、または中央を選択することができます。
Checked True=Checked, False=UnChecked
CheckState このプロパティを使用すると、コントロールの実行時の 3 つの状態をデザイン時に設定することができます。選択肢は Checked、UnChecked、または Indeterminate です。
: Indeterminate は ThreeState プロパティが True に設定されている場合にのみ設定できます。
FlatStyle チェック ボックス コントロールの外見を変更します。オプションは Flat、PopUp、Standard、および System です。
Image このチェック ボックス内に表示するイメージ。
ImageAlign チェック ボックス内のイメージの位置。
ImageIndex ImageList プロパティで設定された ImageList コントロールの中のイメージのインデックス番号。
ImageList ImageIndex プロパティを使ってイメージを取得する ImageList コントロールの名前。
Text Visual Basic 6.0 では、このプロパティは Caption と呼ばれていました。
ThreeState このプロパティが True に設定されていると、CheckState プロパティを Indeterminate に設定することができます。また、ユーザーは Checked、Unchecked、および Indeterminate の間でトグルすることができます。

ラジオ ボタン コントロール

新しいプロパティ 説明
AutoCheck True に設定されている場合、コントロール上の任意の場所をクリックすると、状態が Checked から UnChecked に変更されます。
BackGroundImage ラジオ ボタンの背景イメージを設定することができます。また、このイメージの上にテキストを追加することもできます。
CheckAlign ラジオ ボタンの中のチェックの位置を決定します。Visual Basic 6.0 では、位置をチェック ボックス内のテキストの左または右に制限していました。現在は、左、右、上、下、または中央を選択することができます。
Checked Visual Basic 6.0 では、このプロパティは Value と呼ばれていました。
FlatStyle ラジオ ボタン コントロールの外見を変更します。オプションは Flat、PopUp、Standard、および System です。
Image このラジオ ボタンの中に表示するイメージ。
ImageAlign ラジオ ボタン内のイメージの位置。
ImageIndex ImageList プロパティで設定された ImageList コントロールの中のイメージのインデックス番号。
ImageList ImageIndex プロパティを使ってイメージを取得する ImageList コントロールの名前。
Text Visual Basic 6.0 では、このプロパティは Caption と呼ばれていました。
TextAlign ラジオ ボタンの中に表示されるテキストの位置揃えを制御します。オプションとしては Left、Right、Center、Middle、Top、Bottom、およびこれらの組み合わせが指定できます。

コンボ ボックス コントロール

新しいプロパティ 説明
DisplayMember ComboBox にロードされた個々のオブジェクトに基づいて、コントロールのリスト部分の項目を表示します。既定の DisplayMember は ToString メソッドです。
DropDownStyle これは Visual Basic 6.0 では Style と呼ばれていました。選択肢は、Visual Basic 6.0 と同様に、Simple、DropDownList、および DropDown です。
DropDownWidth コンボ ボックスのドロップダウンの部分の幅 (ピクセル数)。これは、フォーム上のコンボ ボックスの実際のサイズとは異なることがあります。
MaxDropDownItems ユーザーがコンボ ボックスのリスト部分をドロップダウンしたときに表示される項目の数を設定することができます。
MaxLength DropDownStyle が Simple に設定されているときに入力できる文字数の上限。
ValueMember 選択された項目からデータを取得します。既定では ToString メソッドです。

リスト ボックス コントロール

新しいプロパティ 説明
ColumnWidth MultiColumn プロパティを True に設定したときの個々の列の幅。
DisplayMember ListBox にロードされた個々のオブジェクトに基づいて、コントロールのリスト部分の項目を表示します。既定の DisplayMember は ToString メソッドです。
HorizontalExtent HorizontalScrollbar プロパティが True に設定されている場合、このプロパティには、スクロール バーがスクロールできる合計の幅 (ピクセル数) を表す数値を入力することができます。
HorizontalScrollbar データがこのボックスの幅に収まらない場合でも水平スクロール バーを表示したくない場合には、False に設定します。
ItemHeight 固定フォントを使用する場合の、リスト ボックスの中の項目の高さ。
Items Visual Basic 6.0 の ListBox の List プロパティを置き換えます。
MultiColumn Visual Basic 6.0 の Columns プロパティを置き換えます。複数の列を表示したい場合は、この値を True に設定します。
ScrollAlwaysVisible スクロール バーが必要なほどのデータがない場合でも、つねにスクロール バーを表示したい場合は、この値を True に設定します。リスト ボックスに格納されるデータに基づいて、リスト ボックスの適切な幅を決定するのに役立ちます。実行時にデータがロードされた状態でスクロール バーが見えていれば、データが大きくなったときにコントロールの正しい幅を決めやすくなります。
SelectionMode Visual Basic 6.0 の MultiSelect プロパティを置き換えます。
UseTabStop このリスト ボックスの中で、Tab 文字に次の列を表現するという機能を持たせたくない場合には、False に設定します。
ValueMember 選択された項目からデータを取得します。既定では ToString メソッドです。

ピクチャ ボックス コントロール

新しいプロパティ 説明
BackGroundImage ピクチャ ボックスの背景イメージを設定することができます。また、このイメージの上にテキストを追加することもできます。
BorderStyle None と Fixed に加えて、Fixed3D オプションを指定できます。
Image Picture プロパティの代わりに、これが使用されます。
SizeMode ピクチャがどのように表示されるかを制御します。値は Normal、StretchImage、AutoSize、および CenterImage です。

HScrollBar コントロール

新しいプロパティ 説明
Maximum Visual Basic 6.0 の Max プロパティを置き換えます。
Minimum Visual Basic 6.0 の Min プロパティを置き換えます。

VScrollBar コントロール

新しいプロパティ 説明
Maximum Visual Basic 6.0 の Max プロパティを置き換えます。
Minimum Visual Basic 6.0 の Min プロパティを置き換えます。

その他のコントロール

Visual Basic 6.0 の標準コントロール以外にも、さまざまなコントロールが Visual Basic .NET で更新されています。実際、その数はあまりに多く、個々のコントロールについて独自のドキュメントが必要となりかねません。読者は、このドキュメントに示した変更点から、.NET の新しいコントロールを扱うときにどのようなタイプの変更に遭遇するかが推測できるでしょう。

要約

.NET ではユーザー インターフェイスの作成方法に多数の変更が加えられています。これまでに使用してきたコントロールの一部は削除されていたり、大きく変更されたりしています。特定の動作を実現するために、いままでとは別のプロパティを使わなくてはならないこともありますし、ケースによってはコントロールの代わりにシステム クラスを使わなくてはならないこともあります。.NET コントロールは、古い ActiveX コントロールと比べて大幅に改善されていることがわかるでしょう。新しいプロパティとメソッドにより、これまでよりもきれいな Windows アプリケーションを、より簡単に開発できるようになるはずです。

最終更新日: 2002/1/30