次の方法で共有


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

このトピックでは、コンポーネントとコントロールを開発するときに発生する次の一般的な問題の一覧を示します。

  • ツールボックスにコントロールを追加できません

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

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

  • Design-Time エラー: "コンポーネントの作成に失敗しました'コンポーネント名'"

  • STAThreadAttribute

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

ツールボックスにコントロールを追加できません

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

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

  1. ツールボックス を右クリックし、ショートカット メニューから 項目の選択を選択します。

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

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

      –又は–

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

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

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

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

    1. 参照 ボタンをクリックします。

    2. コントロールを含む .dll ファイルを含むフォルダーを参照します。

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

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

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

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

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

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

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

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

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

  2. [ファイル] メニューから [追加] を選択し、その後、[新しいプロジェクト] を選んで、テストプロジェクトをアプリケーションに追加します。

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

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

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

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

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

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

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

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

Design-Time エラー: "コンポーネント 'コンポーネント名' を作成できませんでした"

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

STAThreadAttribute

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

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

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

参照