私は自分のプロジェクトでユーザーコントロールを作成し、プロジェクトをビルドした後、それをツールボックスに入れて、共通コントロールとして使用する必要があります。しかし、私はできません。 UserControl
はプロジェクトの名前空間にあり、右クリックメニューでChoose Item
を試しましたが、追加する方法が見つかりませんでした。
私はあなたがVS2010を使用していると仮定しています(あなたが質問にタグ付けしたものです)VS2008/2005のようにツールボックスに自動的に追加するのに問題がありました。実際には、ツールボックスの自動入力を停止するオプションがあります!
[ツール]> [オプション]> [Windowsフォームデザイナ]> [全般]に移動します。
リストの一番下には、ツールボックス> AutoToolboxPopulateがあり、新規インストールではデフォルトでFalseに設定されています。 trueに設定してから、ソリューションを再構築します。
ソリューション内のユーザーコントロールは、ツールボックスに自動的に追加されるはずです。ソリューションもリロードする必要があります。
ツールバーを右クリックして、コンテキストメニューの[項目を選択]をクリックします。登録されたコンポーネントのダイアログがポップアップします。このダイアログで[参照]をクリックして、使用するユーザーコントロールでアセンブリを選択します。
PS。このアセンブリは事前に登録する必要があります。
ユーザーコントロールにはパラメーターなしのコンストラクターが必要です。そうしないと、リストに表示されません。少なくとも、vs2005ではそうでした。
VS 2010の使用:
Windows.Formsプロジェクトがあるとします。 UserControl(MyControlなど)をプロジェクトに追加し、すべてを設計します。次に、ツールボックスに追加します。
プロジェクトが1回正常にビルドされるとすぐに、フレームワークコンポーネントに表示されます。ツールボックスを右クリックしてコンテキストメニューを表示し、[アイテムの選択...]を選択して、[。NET Frameworkコンポーネント]タブの下のコントロール(MyControl)の名前を参照します。
DLLを使用する利点:フォームと同じプロジェクトのコントロールを編集でき、フォームは新しいコントロールでビルドされます。ただし、コントロールはこのプロジェクトでのみ使用できます。
注:コントロールにビルドエラーがある場合、それらを含むフォームに進む前にそれらを解決するか、デザイナーが心臓発作を起こします。
多くのユーザーコントロールがありましたが、ソリューションを再構築し、Choose Items ...ダイアログでチェックされたにもかかわらず、Toolboxに表示することを拒否しました。
解決:
注これもAutoToolboxPopulateオプションを有効にする必要があります。 @DaveFの答えが示唆するように。
別の解決策:これが機能するかどうかはわかりません。既に問題を解決したので試せませんでしたが、Choose Items ...ダイアログからユーザーコントロールのチェックを外した場合は、 OK、それを開いて、ユーザーコントロールを確認しました。それもうまくいくかもしれません。
いくつかの方法があります。
元のプロジェクトで、ファイル|テンプレートのエクスポートを選択します
次に、ItemTemplateを選択し、ウィザードに従います。
UserControlを別のClassLibraryに移動します(そして名前空間などを修正します)。
それを必要とするプロジェクトのクラスライブラリに参照を追加します。 DLLファイルだけで、GACなどに煩わされることはありません。
UserControlを通常のツールボックスに配置することはお勧めしませんが、それは可能です。 @Arsenyからの回答をご覧ください
私の知る限り、現在のプロジェクトのユーザーコントロールをツールボックスにドラッグアンドドロップできます。問題は、ユーザーコントロールがなくなった別のプロジェクトを選択した場合です。だから私はあなたが別のコントロールライブラリプロジェクトを構築する必要があると思う:
ソリューションに新しいプロジェクトを追加しますが、プロジェクトテンプレートとして[クラスライブラリ]を選択します。そのプロジェクトで、ユーザーコントロールを追加し、必要なすべての操作を行います。それが完了したら、それをビルドすると、自分自身にdllファイルができます(プロジェクトのbin/debugフォルダーで簡単に見つけることができます)。
このdllをツールボックスに追加し(右クリックして[追加]をクリック)、すべてのプロジェクトにそこにとどまります!
私の場合、プロジェクトにコントロールが表示されませんでした。 toolBoxを右クリックして[すべて表示]を選択した場合にのみ、それらが表示されましたが、まだ無効にされていました...
プロジェクトタイプをWindowsアプリケーションからClassLibraryに変更すると修正されました。
基本コントロールでジェネリックを使用している場合の基本的な質問。もし、そうなら:
私たちに制御があると言ってみましょう:
public class MyComboDropDown : ComboDropDownComon<MyType>
{
public MyComboDropDown() { }
}
MyComboDropDownでは、デザイナーを開くことができず、ツールボックスに表示されません。どうして?ベースコントロールがまだコンパイルされていないため-MyComboDropDownがコンパイルされている場合。これを変更できます:
public class MyComboDropDown : MyComboDropDownBase
{
public MyComboDropDown() { }
}
public class MyComboDropDownBase : ComboDropDownComon<MyType>
{
}
再構築後、ツールボックスをリセットするよりも、デザイナーおよびツールボックスでMyComboDropDownを表示できるはずです。
再コンパイルが私にとってはうまくいきました!
デザイナーの問題は、32ビットと64ビットの問題でした。 64ビットアセンブリからのコントロールをツールボックスに追加できない、またはVisual Studio IDE内のデザイナーで使用できない MS KB記事の指示に従ってツールボックスにコントロールを追加できます。