ProjectAで作成したUserControlがいくつかあります。 ProjectBには、コントロールを配置したいWindowsフォームがあります。これらのプロジェクトは両方とも単一のソリューションに含まれています。 ProjectBからProjectAへの参照があるため、UserControlsを「見る」ことができます。
ただし、ユーザーコントロールがツールボックスに表示されず、ウィンドウフォームにドラッグできません。
再構築を試みました。また、「bin」ディレクトリを削除して、すべて再構築を強制しました。
VS2008でユーザーコントロールをツールボックスに入力するにはどうすればよいですか?
この設定を確認してください:
[ツール]> [オプション]> [Windowsフォームデザイナー]> [一般]:AutoToolboxPopulate
これを機能させるには、Trueに設定する必要があります。
プロジェクトをビルドして、確実にコンパイルします。
ユーザーが制御したいフォームで、ツールボックスを開き、右クリックして「アイテムを選択」を選択します
手順1でコンパイルした.exeまたはdllを参照します。
ユーザーコントロールの横にチェックマークが付いていることを確認して、[OK]を押します。
ユーザーコントロールがツールボックスに表示されるはずなので、フォームにドラッグします。
これは、 同様の質問に対するカランサスの回答 から採用されています。
私の場合、AutoToolboxPopulateは既に設定されています(Visual C#2010 Express)。
ただし、新しいユーザーコントロールを実際に表示するには、ツールボックスのプロパティから[すべて表示]をアクティブにする必要がありました(右クリック)。
これまで、ツールボックスにユーザーコントロールが表示されない問題はありませんでした。プロジェクトをビルドすると、表示されるだけです。その後、今日は動作しません。検索後、私は次のことを試しましたが、まだ喜びはありません。
成功せずに動作するように試行錯誤を繰り返した後、デフォルト名を受け入れる新しいWPF Windowsプロジェクトを作成し、ユーザーコントロールを追加しました。プロジェクトを構築し、ユーザーコントロールは以前と同じように表示されました。
次に、プロジェクトまたはwpfウィンドウファイルに何か問題があると思いました。プロジェクトを削除し、新しいプロジェクトを作成して、新しいコントロールを追加しました。プロジェクトをビルドしましたが、機能しませんでした。
私が行った唯一の違いは、プロジェクトの名前を選択することでした。名前に「WPFアプリケーション」という名前を入れました。
プロジェクトを再度削除し、スペースなしで「WPFApplication」と呼ばれる新しいプロジェクトを再度作成し、ユーザーコントロールを追加しました。それを構築し、ユーザーコントロールが表示されました。
ビルド時にツールボックスにユーザーコントロールを自動的に表示したい場合は、プロジェクト名にスペースを使用しないでください。この投稿が他の誰かの無駄な時間を節約することを願っています。
ユーザーコントロールがツールボックスに表示されないもう1つの理由は、ユーザーコントロールにデフォルトコンストラクターがない場合です。
また、ユーザーコントロールに有効な名前空間があることを再確認してください。
名前空間のないコントロールはツールボックス内に配置されないことがわかりました。
通常、ソリューションを構築する必要があります。それはほとんど常に私のために動作します。
同じ問題がありました。多くのグーグル検索の後、何も見つかりませんでしたが、偶然、ユーザーコントロールを作成したプロジェクトと同じプロジェクトにいる間にツールボックスをクリックすると、「すべて表示 "の場合、プロジェクトと同じ名前のグループがツールボックスの上部に表示され、ユーザーコントロールを見つけることができます。これで、目的のフォームにコントロールを追加できます。
与えられたすべての指示とは別に(ツール>オプション> Windowsフォームデザイナー>一般:AutoToolboxPopulate)+ソリューションを構築する必要があります(私にとっては明らかです)、おそらくクラスアクセス修飾子に注意を払う必要があります:パブリック。コントロールを作成したばかりで、ツールボックスリストに表示されず、理由もわかりませんでした。設定後
public class yourClass:control {}
リストに登場したよりも。 ;)これが他の人を助けることを願っています。
私のコントロールはパブリックで、[ツールボックスアイテムの選択]ダイアログでチェックされましたが、まだ表示されていませんでした。
これは最終的に私のために働いたものです:
ツールボックスのどこかを右クリックし、「アイテムを選択」をクリックします。私のアイテムを見つけたとき、すでにチェックされていました。次に、アイテムのチェックを外し、[OK]をクリックしました。次に、ツールボックスをもう一度右クリックしてアイテムを検索しました...アイテムがなくなったので、[参照]をクリックし、obj/x86/debugフォルダーに移動して、exeを選択しました。その後、アイテムはツールボックスに正しく追加されました。
VSのバグだと思います。
ToolStripItems
(たとえばToolStripStatusLabel
)で作業している可能性のある人のために、ドロップダウンメニュー(StatusStrip
のような)に派生コントロールを実際に表示するには、 クラスをpublic
に設定する必要がありますその後、ソリューションをビルドします。
また、クラスのデザイナー属性も忘れないでください。次のようなものです。
using System.Windows.Forms.Design;
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public class MyStatusLabel : ToolStripStatusLabel
{
}
それを正しくするためにしばらく時間がかかりました。これが誰かの時間を節約できることを願っています。
ここに私の問題がありました:いくつかの引数を受け入れるコントロールに新しいコンストラクタを追加しましたが、空のコンストラクタを明示的に再宣言していませんでした!ツールボックスには、空のコンストラクターを持つコントロールのみを含めることができます。一般に、vbでクラスを設計する場合、暗黙的に定義された空のコンストラクターがあります(つまり、宣言する必要はありません)。しかし、独自のコンストラクターの設計を開始するとすぐに、この空のコンストラクターは消えるため、コード内で明示的に再定義する必要があります!とにかく、ほとんどの経験豊富なvbコーダーはすでにこれをすべて知っていますが、これが私のような初心者の助けになることを願っています:)。
ビルド出力ディレクトリを確認してください。何らかの理由でプロジェクトのbin \ディレクトリ以外の場所に出力を構築している場合、コントロールはツールボックスに表示されません。
私の場合、エラーの原因は、コントロールの.dllへのパスが長すぎることです。私はそれを少し縮め、すべてがうまく機能するようになりました。
また、パス内の特別な記号(例:#を使用)がコントロールの表示に影響することもわかりました。
それが問題を解決することを願っています。
上記のすべてが失敗する可能性があります。
新しいユーザーコントロール(TestControl)を作成して修正し、Visual Studioをトリガーして、プロジェクトのコントロールタブ+コントロールをツールボックスに魔法のように追加しました。次に、テストコントロールを削除しました。
ちなみに、VS 2008の自動化されたWindows更新プログラムを最近インストールした後、これが起こりました。
私が通常していることは、新しいタブを作成し、そのタブにexe/dllを追加することです...ロード時間と一般的な面倒のために、そのソリューションにあまり快適ではありません。
友人がこれをスピードアップする方法を教えてくれました。作成する新しいコントロールごとに、ツールボックスなどで[アイテムの選択...]をクリックする代わりに、MyCustomControls
という名前のファイルを作成し、そこでカスタムコントロールを作成できます。
これで、「アイテムを選択...」を実行し、このファイルを一度追加するだけで済みます。後で新しいコントロールを追加することにした場合は、MyCustomControls
に作成してから再構築します。
ツールボックスに新しいコントロールが追加されます。 (AutoToolboxPopulate
がある場合は、通常のコンパイルで自動的に表示されます)
多くの場合、クラスを「ファイルごとに1つのクラス」に分けたいため、これは残念です。 VSが自分のやり方でやりたくないという理由だけで、コードアーキテクチャを台無しにしなければならないのは恐ろしいことです。 :)
私はこの解決策にあまり慣れていませんが、何かを素早く行う必要があり、ファイル内の複数のユーザーコントロールを気にかけない、または単に怠けている場合、これはあなたにぴったりかもしれません。 :)
それでもvstudioツールボックスにユーザーコントロールが表示されない理由が見つからない場合。その後、別のビジュアルスタジオでvstudioをデバッグできます。 ここで方法を見つけることができます 。
他のすべての回答をたどってみたがstillが機能しない場合は、次のように修正しました。
Properties
を選択します。Build
設定カテゴリで、Register for COM interop
がチェックされます。まあ、これが働いた以外は何も私のために働いていませんでした...
あまり良い解決策ではありませんが、次の手順を試してください
私はほんの数時間前にこのtrapに陥りました。
カスタムユーザーコントロールを備えた.NET 2.0 Windowsアプリケーションプロジェクトがあります。うまくいきました。そこで、プロジェクトを少しきれいにするために、サブフォルダーでファイルを注文することにしました。
その後、Visual Studio 2010デザイナーはフォームの読み込みを停止し、ToolBoxにはコントロールが表示されなくなります。
プロジェクトルートのソースファイルを元に戻し、ToolBoxをリセットしましたが、何も機能していないようです。その後、ReSharperの「未使用の参照を削除」を使用したことを思い出したので、未使用の参照を戻す、特にSystem.Data:解決しようとしました:O理由は言えませんが、これでうまくいきました。
私の経験が他の人に役立つことを願っています。 :)
バイ、ナンド
既にいじくり回してみました:
それでも、まだグレー表示されています。
パスの長さを確認し、絶対パスで使用されている文字を確認します。
「C:\ Users\myName\myCompany\R&D\Projects」にプロジェクトがありました
そして数時間後に"R&D"が問題であることが判明しました。
「&」は、ツールボックスでユーザーコントロール項目を有効にすることを許可しませんでした。
カスタムコントロールを追加する前に、現在のプロジェクトの.Netバージョンと互換性があることを確認してください。
VS2008上のWindows CE 5.0および.Net Compact v3.5のプロジェクトのツールボックスにカスタムコントロールを追加しようとしていました。以前の提案をすべて行いましたが、何も機能しませんでした。 「すべて表示」がチェックされている場合、コントロールは表示されますが、「アイテムの選択」メニューがチェックされていてもグレー表示されます。
.Net v2.0で新しいプロジェクトを作成しましたが、完全に機能しました。
症状1:フォーム、ユーザーコントロール、およびコンポーネントのデザインビューが失敗しました!
症状2:ツールボックスのUserControl&コンポーネント
解決策:UserControlの背後にあるvbでスコープをPublicに設定し、コンポーネント
プロジェクトパスを確認し、&、#などを避けます.
ソリューションをdrive:\work\c#\folder\
からdrive:\work\folder
に移動し、問題を解決しました。
ユーザーコントロールをツールボックスに追加しようとすると(ツールボックスを右クリックし、アイテムを選択し、DLLを選択します)、DLLにコントロールがなかったというメッセージが表示されます。
とにかく、VSでmy DLLにフォームを作成し、UserControlを追加しようとすることで、問題は解決しました。デフォルトのコンストラクターがないことを示すエラーメッセージが表示されました。
public UserControl() {
...
}
有効な引数が何であるかを知ることができないため、設計者はこれを必要とします。空白のコンストラクターをUserControlに追加すると、問題なくツールボックスに追加されました。
私はx64専用アプリケーションをビルドしようとしていたので、プラットフォームターゲットはもちろんx64
に設定されていました。
ただし、2016年であっても、Visual Studio(devenv.exe
)は依然として32ビットプロセスであり、64ビットアセンブリを読み込むことはできません。 Visual Studioのビット数を確認するには、タスクマネージャーを開き、プロセスの名前で*32
を確認します。
ツールボックスのコントロールを表示する回避策:プロジェクト設定でプラットフォームターゲットをAny CPU
に設定します。必要に応じて、デバッグおよびリリースビルドでそれを行います。
前述のように、 here ツールボックスにユーザーコントロールを読み込むようにVisual Studioに指示する必要があります。
[ToolboxItem(true)]
public class PanelTitle : LabelControl {
// Whatever code to override LabelControl here...
}
UserControlで、Newが宣言されていることを確認してくださいPublic。 Sub New(デフォルトはFriend)を宣言しただけでは表示されません。