次の方法で共有


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

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

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

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

こちらも参照ください