User コントロール (Visual Basic 6.0 ユーザー向け)

更新 : 2007 年 11 月

Visual Basic 6.0 でも Visual Basic 2008 でもコントロールを作成できますが、注意が必要な相違点がいくつかあります。

概念の違い

Visual Basic 6.0 では、UserControl プロジェクト (ActiveX コントロール プロジェクトとも呼ばれます) を使用して ActiveX コントロールを作成します。ActiveX コントロールのコンパイル後には、Visual Basic 6.0 フォームや Internet Explorer などの ActiveX をサポートするすべてのコンテナで UserControl をホストできます。

Visual Basic 2008 では、Windows コントロール ライブラリ プロジェクトを使用して、Windows フォーム アプリケーションでホストできるコントロールを作成します。

デザイン時の動作

Visual Basic 6.0 では、デザイン時に UserControl オブジェクトをフォームに追加する前に UserControl デザイナを閉じる必要があり、それによってコントロールが自動的にコンパイル (ビルド) されます。それ以降に UserControl オブジェクト を変更しても、アプリケーションを実行するまでフォーム上の UserControl のインスタンスには変更内容が反映されず、UserControl デザイナを開くと自動的に閉じられます。

Visual Basic 2008 では、UserControl デザイナを閉じずに、フォームに UserControl オブジェクトを追加できます。ただし、事前にユーザー コントロールをビルドしておく必要があります。UserControl デザイナを閉じただけでは、コントロールはビルドされません。それ以降にユーザー コントロールを変更しても、UserControl オブジェクトを再度ビルドするまでフォーム デザイナには変更内容が反映されません。テスト アプリケーションをデバッグするたびに、UserControl オブジェクトは自動的に再度ビルドされます。

値の永続化

Visual Basic 6.0 では、ReadProperties イベントと WriteProperties イベントを使用して、UserControl オブジェクトの値を取得したり、値を PropertyBag オブジェクトに保存したりします。

Visual Basic 2008 では、PropertyBag オブジェクトはサポートされていません。また、ReadProperties イベントおよび WriteProperties イベントは使用されなくなりました。代わりに、シリアル化を使用して、プロパティをバイナリ形式または SOAP 形式で保存および取得します。詳細については、「チュートリアル : Visual Basic でのオブジェクトの永続化」を参照してください。

アップグレード メモ

Visual Basic 6.0 の UserControl プロジェクトを Visual Basic 2008 にアップグレードすると、Windows コントロール ライブラリにアップグレードされるため、Internet Explorer ではコントロールをホストできなくなります。

参照

処理手順

チュートリアル : Visual Basic でのオブジェクトの永続化

概念

PropertyBag の対応関係 (Visual Basic 6.0 ユーザー向け)

その他の技術情報

デザイン時の Windows フォーム コントロールの開発