次の方法で共有


コントロールとコンポーネントの作成時のトラブルシューティング

更新 : 2007 年 11 月

このトピックでは、コンポーネントとコントロールの作成時に発生する次の一般的な問題について説明します。詳細については、「コンポーネントによるプログラミング」を参照してください。

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

  • 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: Common Language Runtime) に通知します。この属性を Windows フォーム アプリケーションの Main メソッドに適用していない場合、意図しない動作が発生する場合があります。たとえば、ListView などのコントロールに背景イメージが表示されない場合があります。また、一部のコントロールでオートコンプリート動作やドラッグ アンド ドロップ動作を正常に行うためには、この属性が必要になる場合があります。

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

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

参照

処理手順

チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定

方法 : UserControl の実行時の動作をテストする

チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ

デザイン時開発のトラブルシューティング

その他の技術情報

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

コンポーネントの作成

コンポーネントによるプログラミング