コントロールとコンポーネントの作成時のトラブルシューティング
このトピックでは、コンポーネントとコントロールの作成時に発生する次の一般的な問題について説明します。詳細については、「コンポーネントによるプログラミング」を参照してください。
ツールボックスにコントロールを追加できない
Windows フォームのユーザー コントロールまたはコンポーネントをデバッグできない
継承されたコントロールまたはコンポーネントでイベントが 2 回発生する
デザイン時エラー : "コンポーネント 'Component Name' を生成できませんでした。"
STAThreadAttribute
ツールボックスにコントロールを追加できない
別のプロジェクトで作成したカスタム コントロールまたはサードパーティ コントロールをツールボックスに追加する場合は、手動で追加する必要があります。コントロールまたはコンポーネントが現在のプロジェクトに含まれているときは、ツールボックスに自動的に表示されます。詳細については、「チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定」を参照してください。
コントロールをツールボックスに追加するには
[ツールボックス] を右クリックして、ショートカット メニューの [アイテムの選択] をクリックします。
[ツールボックス アイテムの選択] ダイアログ ボックスで、コンポーネントを追加します。
.NET Framework コンポーネントまたはコントロールを追加するには、[.NET Framework コンポーネント] タブをクリックします。
または
COM コンポーネントまたは ActiveX コントロールを追加するには、[COM コンポーネント] タブをクリックします。
ダイアログ ボックスにコントロールが一覧表示されたら、コントロールが選択されていることを確認して [OK] をクリックします。
コントロールがツールボックスに追加されます。
ダイアログ ボックスにコントロールが一覧表示されない場合は、次の手順を実行します。
[参照] をクリックします。
コントロールが入っている .dll ファイルが格納されたフォルダを参照します。
.dll ファイルを選択し、[開く] をクリックします。
ダイアログ ボックスにコントロールが表示されます。
コントロールが選択されていることを確認して [OK] をクリックします。
コントロールがツールボックスに追加されます。
Windows フォームのユーザー コントロールまたはコンポーネントをデバッグできない
コントロールが UserControl クラスから派生している場合は、テスト コンテナで実行時の動作をデバッグできます。詳細については、「方法 : UserControl の実行時の動作をテストする」を参照してください。
その他のカスタム コントロールやカスタム コンポーネントはスタンドアロン プロジェクトではありません。そのため、Windows フォーム プロジェクトなどのアプリケーションでホストする必要があります。コントロールまたはコンポーネントをデバッグするには、Windows フォーム プロジェクトに追加する必要があります。
コントロールまたはコンポーネントをデバッグするには
[ビルド] メニューの [ソリューションのビルド] をクリックしてソリューションをビルドします。
[ファイル] メニューで、[追加]、[新しいプロジェクト] の順にクリックして、アプリケーションにテスト プロジェクトを追加します。
[新しいプロジェクトの追加] ダイアログ ボックスで、プロジェクトの種類として [Windows アプリケーション] を選択します。
ソリューション エクスプローラで、新しいプロジェクトの [参照設定] ノードを右クリックします。ショートカット メニューの [参照の追加] をクリックして、コントロールまたはコンポーネントを含むプロジェクトへの参照を追加します。
コントロールまたはコンポーネントのインスタンスをテスト プロジェクトに作成します。コンポーネントがツールボックスに表示されている場合は、デザイナ画面にドラッグできます。または、次のコード例に示すように、プログラムによってインスタンスを作成できます。
Dim Component1 As New MyNeatComponent()
MyNeatComponent Component1 = new MyNeatComponent();
これで、コントロールまたはコンポーネントを通常の方法でデバッグできるようになります。
デバッグの詳細については、「Visual Studio でのデバッグ」および「チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ」を参照してください。
継承されたコントロールまたはコンポーネントでイベントが 2 回発生する
Handles 句が重複していることが原因と考えられます。詳細については、「Visual Basic 2005 における継承されたイベント ハンドラのトラブルシューティング」を参照してください。
デザイン時エラー : "コンポーネント 'コンポーネント名' を生成できませんでした。"
コンポーネントやコントロールは、パラメータなしの既定のコンストラクタを提供する必要があります。デザイン環境は、コンポーネントやコントロールのインスタンスを作成するときに、パラメータを受け取るコンストラクタ オーバーロードにパラメータを提供しません。
STAThreadAttribute
STAThreadAttribute は、Windows フォームがシングルスレッド アパートメント モデルを使用することを共通言語ランタイム (CLR: Common Language Runtime) に通知します。この属性を Windows フォーム アプリケーションの Main
メソッドに適用していない場合、意図しない動作が発生する場合があります。たとえば、ListView などのコントロールに背景イメージが表示されない場合があります。また、一部のコントロールでオートコンプリート動作やドラッグ アンド ドロップ動作を正常に行うためには、この属性が必要になる場合があります。
参照
処理手順
チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定
方法 : UserControl の実行時の動作をテストする
チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ
デザイン時開発のトラブルシューティング