プロジェクトでユーザーコントロールを作成しました。プロジェクトをビルドした後、それをツールボックスに配置し、共通のコントロールとして使用する必要があります。しかし、私はできません。これUserControl
はプロジェクトの名前空間にありChoose Item
、右クリックメニューで試しましたが、追加する方法が見つかりませんでした。
11 に答える
VS2008 / 2005のように、ツールボックスに自動的に追加するのに問題がありました。
実際には、ツールボックスの自動入力を停止するオプションがあります。
[ツール]>[オプション]>[Windowsフォームデザイナ]>[一般]に移動します
リストの一番下に、Toolbox> AutoToolboxPopulateがあります。これは、新規インストールではデフォルトでFalseになります。trueに設定してから、ソリューションを再構築します。
ちょっとプレスト、あなたのソリューションのユーザーコントロールは自動的にツールボックスに追加されるべきです。
ソリューションのリロードも必要になる場合があります。
ツールバーを右クリックし、コンテキストメニューの[アイテムを選択]をクリックします。コンポーネントが登録されたダイアログがポップアップ表示されます。このダイアログで[参照]をクリックして、使用するユーザーコントロールを使用してアセンブリを選択します。
PS。このアセンブリは事前に登録する必要があります。
ユーザーコントロールにはパラメーターのないコンストラクターが必要であることがわかりました。そうでないと、リストに表示されません。少なくともそれはvs2005では真実でした。
VS 2010の使用:
Windows.Formsプロジェクトがあるとしましょう。UserControl(たとえばMyControl)をプロジェクトに追加し、すべてを設計します。次に、それをツールボックスに追加します。
プロジェクトが正常にビルドされるとすぐに、フレームワークコンポーネントに表示されます。ツールボックスを右クリックしてコンテキストメニューを表示し、[アイテムの選択...]を選択して、[。NET Frameworkコンポーネント]タブでコントロールの名前(MyControl)を参照します。
dllを使用する場合の利点:フォームと同じプロジェクトでコントロールを編集でき、フォームは新しいコントロールでビルドされます。ただし、コントロールはこのプロジェクトでのみ使用できます。
注:コントロールにビルドエラーがある場合は、含まれているフォームに移動する前にそれらを解決してください。そうしないと、デザイナーが心臓発作を起こします。
多くのユーザーコントロールがありましたが、ソリューションを再構築し、[アイテムの選択... ]ダイアログでチェックしたにもかかわらず、 1つはツールボックスに表示することを拒否しました。
解決:
- ソリューションエクスプローラーから問題のあるユーザーコントロールファイルを右クリックし、 [プロジェクトから除外]を選択しました
- ソリューションを再構築します
- ユーザーコントロールを右クリックし、[プロジェクトに含める]を選択します(ソリューションエクスプローラーで[すべてのファイルを表示]が有効になっている場合)
これには、 AutoToolboxPopulateオプションを有効にする必要があることに注意してください。@DaveFの答えが示唆するように。
別の解決策:これが機能するかどうかはわかりません。すでに問題を解決しているため、試すことができませんでした。ただし、 [アイテムの選択... ]ダイアログでユーザーコントロールのチェックを外した場合は、[OK]をクリックしてから、バックアップを開いてください。ユーザーコントロールを確認しました。それもうまくいくかもしれません。
いくつかの方法があります。
元のプロジェクトで、[ファイル]、[テンプレートのエクスポート
]の順に選択し、[ItemTemplate]を選択して、ウィザードに従います。UserControlを別のClassLibraryに移動します(名前空間などを修正します)。
それを必要とするプロジェクトからクラスライブラリに参照を追加します。GACや何かを気にしないでください。DLLファイルだけです。
UserControlを通常のToolBoxに配置することはお勧めしませんが、実行することはできます。@Arsenyからの回答を参照してください
私の場合、プロジェクト内のコントロールはどれも表示されませんでした。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ビットアセンブリからツールボックスにコントロールを追加できない」または「VisualStudioIDEMS KB内のデザイナーで使用する」の記事の手順に従って、ツールボックスにコントロールを追加できます。
再コンパイルは私のためにトリックをしました!
VS2022でこの問題が発生しました。迅速で簡単な答えがあるかもしれません。
私の速くて汚いユーザーコントロールはツールボックスに表示されませんでした(完全な再構築など)。
私はsolutiuonとVSを終了し、すべてをリロードし、再構築しました。それが表示され、機能しました。