■ フォームの変更

  • 自動アップグレード

    VB 固有のフォーム → Windows フォーム

  • フォームデザイナやプロパティウィンドウによるコード生成

  • Windows フォーム/コントロールはクラス

変更ポイント

Windows フォーム

Visual Basic 6.0 で利用していたフォームは、Visual Basic 固有のフォームでした。Visual Basic .NET では、Framework が提供する Windows フォームを利用します。このフォームは、System.Windows.Forms.Form から継承して作られます。

というと難しく聞こえるかもしれませんが、実際には従来と同様、[プロジェクト]-[ Windows フォームの追加]メニューから簡単に Windows フォームをプロジェクトに追加できます。さらに、自分で作成したフォームをテンプレートとして、それを継承した新しいフォームを作成する、といったこともできます。

フォームデザイナやプロパティウィンドウによるコードの生成

フォームやコントロールを利用するには、これらを生成するための定義やプロパティを設定するためのコードを記述しておくことが必要があります。

というと面倒そうに思ってしまうかもしれませんが、実際の作業としては従来同様、フォームデザイナを利用してフォームやコントロールをデザインし、プロパティウィンドウでプロパティを設定します。これにより、自動的に定義や設定がコードとして生成されるのでコーディングの必要はありません。しかも、これらは、最初は隠されているので (図 1) 、必要に応じて行頭の[+]の部分をクリックして展開し、生成されたコード参照することができます (図 2)。図 2 の中のコメントからもわかるように、禁止されている部分はコードエディタから修正できませんが、その他についてはコードエディタからも修正可能です。

図 1:VB .NET が生成したコードは隠されている

図 1:VB .NET が生成したコードは隠されている

図 2:生成されたコードを表示
図 2:生成されたコードを表示

関連・補足項目

Visual Basic 6.0 で作成した Windows アプリケーションをアップグレードすると、Visual Basicフォームは Windows フォームに自動的にアップグレードされます。

また、このときフォームやコントロールの定義やプロパティ設定をコードとしても生成してくれるため、対応するオブジェクト、プロパティ、メソッド、イベントが存在する場合には、多くの部分がアップグレードされます。なお、変更されるプロパティ、メソッド、イベントについては、本章の 「フォームのプロパティ、メソッド、イベント」 を参照してください。

VB 固有のフォームから Windows フォームへの変更に関するもうひとつのポイントは、「Windows フォームやコントロールはクラスである」 ということです。図 3 はフォームとコントロールの階層を表わしています。この図では、下位のクラスは上位のクラスを継承して存在します。このように上位クラスを継承して新しいクラスを作ることを“派生”といいます。派生すると、基本的に下位のクラスは上位のクラスの機能 + α の機能を提供します。

Windows フォームもコントロールもいずれも、元は Control クラスから派生しています。Control クラスは、 Windows フォームとグラフィカルなUIをもつコントロールに共通の機能を提供します。ScrollableControl クラスでは、その名前の通り、スクロールに関する機能が追加され、ContainerControl では子コントロールを管理する機能が追加されます。これらのクラスから派生する Form クラスや独自の Windows コントロールを作成するための UserControl クラスはこれらの機能をすべてもつことになります。さらに各プロジェクトで、Form クラスから派生して作られた Form クラスを作成し、利用します。しかし、これらはあくまでもクラス (定義) に過ぎないので、これらを利用するためには実際には new ステートメントなどを利用してインスタンス (実体) を生成する必要があります。これらは、フォームデザイナが自動生成するコードで確認することができます。もちろん、わたしたちがコーディングをする必要はありません。

図 3:フォームと主なコントロールのクラス階層
図 3:フォームと主なコントロールのクラス階層