UserControlをVisual Studioツールボックスに配置する方法


93

プロジェクトでユーザーコントロールを作成し、プロジェクトをビルドした後、それをツールボックスに入れて、コモンコントロールとして使用する必要があります。でもできません。これUserControlは私のプロジェクト名前空間にありChoose Item、右クリックメニューを試しましたが、追加する方法が見つかりませんでした。

回答:


114

私はあなたがVS2010を使用していると想定しています(これが質問にタグを付けたものです)VS2008 / 2005のようにツールボックスに自動的に追加するのに問題がありました。実際には、ツールボックスの自動入力を停止するオプションがあります。

[ツール]> [オプション]> [Windowsフォームデザイナー]> [全般]に移動します

リストの下部には、ツールボックス> AutoToolboxPopulateがあり、新規インストールではデフォルトでFalseに設定されています。trueに設定して、ソリューションを再構築します。

ソリューションのユーザーコントロールのprestoは、ツールボックスに自動的に追加される必要があります。ソリューションをリロードする必要がある場合もあります。


31
私にとってここでのキーワードは「再構築」でした。それだけを行うと、これが分類されました。
ダニーベケット

2
そして、私は再構築後にソリューションを再開する必要がありました
ジムラーマン2013年

1
VS2012では、オプションダイアログに「現在のソリューションを再度開いてこれを有効にする必要があります」というヒントを追加しました。
Carlos P

2
@AnatoliiGumennyi UserControl現在のプロジェクトの外にある場合は、@ Arsenyの指示に従う必要があります。
2015

2
注:VS2013のように見えますが、ツールボックス> AutoToolboxPopulate設定は、新規インストール時にデフォルトでTrueになりました。
Curmudgeon 2015年

35

ツールバーを右クリックして、コンテキストメニューの[アイテムを選択]をクリックします。登録されたコンポーネントのダイアログがポップアップします。このダイアログで[参照]をクリックして、使用するユーザーコントロールを含むアセンブリを選択します。

PS。このアセンブリは事前に登録する必要があります。


17
「以前に登録」について説明できますか?それは必須ではないと思います。
Henk Holterman、2010


14

VS 2010の使用:

Windows.Formsプロジェクトがあるとします。UserControl(たとえばMyControl)をプロジェクトに追加し、すべてを設計します。次に、それをツールボックスに追加します。

プロジェクトが1回正常にビルドされるとすぐに、フレームワークコンポーネントに表示されます。ツールボックスを右クリックしてコンテキストメニューを表示し、[Choose Items ...]を選択して、[。NET Framework Components]タブでコントロール(MyControl)の名前を参照します。

DLLを使用する場合の利点:フォームと同じプロジェクトでコントロールを編集でき、フォームは新しいコントロールでビルドされます。ただし、コントロールはこのプロジェクトでのみ使用できます。

注:コントロールにビルドエラーがある場合は、それらを解決してから、フォームを含む場所に移動してください。そうでない場合、デザイナーが心臓発作を起こします。


1
ツールボックスに.exeをインポートすると、他のプロジェクトでも使用できる可能性があります。
セバスチャン

1
「またはデザイナーが心臓発作を起こしている」を含むすべての回答に投票します。
Joel

私は同じことをしましたが、すべて問題ありませんが、コードを別のプロジェクトに移動してdllを作成し、dllファイルを参照すると、カスタムコントロールが表示されません。
Fandi Susanto 2014

6

多くのユーザーコントロールがありましたが、ソリューションを再構築して[ アイテム選択 ]ダイアログでチェックしたにもかかわらず、1つは[ ツールボックス]に表示することを拒否しました。

解決:

  1. ソリューションエクスプローラーから、問題のユーザーコントロールファイルを右クリックし[プロジェクトから除外]を選択しました
  2. ソリューションを再構築する
  3. ユーザーコントロールを右クリックし、[ プロジェクトに含める]を選択しますソリューションエクスプローラーで[ すべてのファイルを表示]が有効になっている場合)。

なお、これはまた、あなたが持っている必要がありAutoToolboxPopulateのオプションが有効。@DaveFの回答が示唆するように。

代替ソリューション:私はこの作品かはわからない、と私はすでに私の問題を解決するため、私はそれを試してみませんでしたが、あなたはからユーザーコントロールをオフにするとアイテムを選択してください...ダイアログ、ヒットOK、それはバックアップ開かユーザーコントロールを確認しました。それもうまくいくかもしれません。


3

いくつかの方法があります。

  1. 元のプロジェクトで、[ファイル]、[テンプレートのエクスポート]の順に選択し、
    次に[アイテムテンプレート]を選択して、ウィザードに従います。

  2. UserControlを別のClassLibraryに移動します(名前空間を修正します)。
    必要なプロジェクトからクラスライブラリに参照を追加します。GACやその他のことを気にしないでください。DLLファイルだけです。

通常のツールボックスにUserControlを配置することはお勧めしませんが、それは可能です。@Arsenyからの回答をご覧ください


これはより良いアプローチのようです。唯一の欠点は、コントロールを視覚的に編集できないことです(または、少なくとも方法がわかりませんでした)。
セバスチャン

テンプレートを要素として追加したので、デザイナーが表示しています。
セバスチャン

UserControlを含むプロジェクトが同じソリューションにある場合は、完全に同意し、DLLにリンクしないことを強くお勧めします。そして、DLLで動作します。つまり、ライブラリプロジェクトのUserControlは、ライブラリを参照するすべてのWinFormsプロジェクトに表示されます(もちろん、再構築後、;-)です)。
Xan-Kun Clark-Davis

2

私の場合、プロジェクト内のコントロールはどれも表示されませんでした。toolBoxを右クリックして[すべて表示]を選択した場合にのみ表示されましたが、無効にされていました...

プロジェクトタイプをWindowsアプリケーションからClassLibraryに変更すると、修正が行われました。


1

基本コントロールでジェネリックを使用している場合の基本的な質問。もし、そうなら:

私たちがコントロールしているとしましょう:

public class MyComboDropDown : ComboDropDownComon<MyType>
{
    public MyComboDropDown() { }
}

MyComboDropDownはその上でデザイナーを開くことができず、ツールボックスに表示されません。どうして?ベースコントロールがまだコンパイルされていないため-MyComboDropDownがコンパイルされたとき。次のように変更できます。

public class MyComboDropDown : MyComboDropDownBase
{
    public MyComboDropDown() { }
}

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

再構築後、ツールボックスをリセットすると、デザイナーとツールボックスにMyComboDropDownが表示されます。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.