コントロールとコンポーネントの作成に関するトラブルシューティング

このトピックでは、コンポーネントとコントロールの開発時に発生する次の一般的な問題について説明します。

  • ツールボックスにコントロールを追加できない

  • Windows フォームのユーザー コントロールまたはコンポーネントをデバッグできない

  • 継承されたコントロールまたはコンポーネントでイベントが 2 回発生する

  • デザイン時エラー: "コンポーネント 'コンポーネント名' を生成できませんでした"

  • STAThreadAttribute

  • ツールボックスにコンポーネント アイコンが表示されない

ツールボックスにコントロールを追加できない

別のプロジェクトで作成したカスタム コントロールまたはサード パーティ製コントロールをツールボックスに追加する場合は、手動で追加する必要があります。 現在のプロジェクトにコントロールまたはコンポーネントが含まれている場合は、ツールボックスに自動的に表示されます。 詳細については、「チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定」を参照してください。

ツールボックスにコントロールを追加するには

  1. [ツールボックス] を右クリックし、ショートカット メニューの [アイテムの選択] をクリックします。

  2. [ツールボックス アイテムの選択] ダイアログ ボックスで、コンポーネントを追加します。

    • .NET Framework コンポーネントまたはコントロールを追加する場合は、[.NET Framework コンポーネント] タブをクリックします。

      または

    • COM コンポーネントまたは ActiveX コントロールを追加する場合は、[COM コンポーネント] タブをクリックします。

  3. ダイアログ ボックスにコントロールが表示されている場合は、コントロールが選択されていることを確認し、[OK] をクリックします。

    コントロールがツールボックスに追加されます。

  4. ダイアログ ボックスにコントロールが表示されていない場合は、次の手順を実行します。

    1. [参照] をクリックし、

    2. コントロールが含まれた .dll ファイルがあるフォルダーを参照します。

    3. .dll ファイルを選択し、[開く] をクリックします。

      ダイアログ ボックスにコントロールが表示されます。

    4. コントロールが選択されていることを確認し、[OK] をクリックします。

      コントロールがツールボックスに追加されます。

Windows フォームのユーザー コントロールまたはコンポーネントをデバッグできない

コントロールが UserControl クラスから派生している場合は、テスト コンテナーで実行時の動作をデバッグできます。 詳細については、「方法: UserControl の実行時の動作をテストする」を参照してください。

他のカスタム コントロールやカスタム コンポーネントはスタンドアロン プロジェクトではありません。 そのため、Windows フォーム プロジェクトなどのアプリケーションでホストする必要があります。 コントロールまたはコンポーネントをデバッグするには、Windows フォーム プロジェクトに追加する必要があります。

コントロールまたはコンポーネントをデバッグするには

  1. [ビルド] メニューの [ソリューションのビルド] をクリックして、ソリューションをビルドします。

  2. [ファイル] メニューの [追加] をクリックし、[新しいプロジェクト] をクリックして、アプリケーションにテスト プロジェクトを追加します。

  3. [新しいプロジェクトの追加] ダイアログ ボックスで、プロジェクトの種類として [Windows アプリケーション] を選択します。

  4. ソリューション エクスプローラーで、新しいプロジェクトの [参照設定] ノードを右クリックします。 ショートカット メニューの [参照の追加] をクリックして、コントロールまたはコンポーネントを含むプロジェクトへの参照を追加します。

  5. テスト プロジェクトにコントロールまたはコンポーネントのインスタンスを作成します。 コンポーネントがツールボックスに表示されている場合は、デザイナー画面にドラッグできます。または、次のコード例に示すように、インスタンスをプログラムで作成できます。

    Dim Component1 As New MyNeatComponent()
    
    MyNeatComponent Component1 = new MyNeatComponent();
    

    これで、コントロールまたはコンポーネントを通常どおりデバッグできるようになります。

デバッグの詳細については、「Visual Studio でのデバッグ」および「チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ」を参照してください。

継承されたコントロールまたはコンポーネントでイベントが 2 回発生する

Handles 句が重複していることが原因と考えられます。 詳細については、「Visual Basic での継承されたイベント ハンドラーのトラブルシューティング」を参照してください。

デザイン時エラー: "コンポーネント 'コンポーネント名' を生成できませんでした"

コンポーネントまたはコントロールで、パラメーターなしのコンストラクターを提供する必要があります。 デザイン環境では、コンポーネントまたはコントロールのインスタンスを作成するときに、パラメーターを受け取るコンストラクター オーバーロードにパラメーターを提供しません。

STAThreadAttribute

STAThreadAttribute により、Windows フォームがシングルスレッド アパートメント モデルを使用していることが共通言語ランタイム (CLR) に通知されます。 この属性を Windows フォーム アプリケーションの Main メソッドに適用していない場合、意図しない動作が発生することがあります。 たとえば、ListView などのコントロールに背景イメージが表示されない場合があります。 また、一部のコントロールでは、オートコンプリートやドラッグ アンド ドロップの動作を正常に行うためにこの属性が必要になる場合もあります。

ツールボックスにコンポーネント アイコンが表示されない

ToolboxBitmapAttribute を使用してアイコンをカスタム コンポーネントに関連付けた場合、自動生成されたコンポーネントのビットマップはツールボックスに表示されません。 ビットマップを表示するには、[ツールボックス アイテムの選択] ダイアログ ボックスを使用してコントロールを再読み込みします。 詳細については、「方法 : コントロールにツールボックス ビットマップを指定する」を参照してください。

関連項目