web-dev-qa-db-ja.com

ユーザーコントロールがツールボックスに表示されない

ProjectAで作成したUserControlがいくつかあります。 ProjectBには、コントロールを配置したいWindowsフォームがあります。これらのプロジェクトは両方とも単一のソリューションに含まれています。 ProjectBからProjectAへの参照があるため、UserControlsを「見る」ことができます。

ただし、ユーザーコントロールがツールボックスに表示されず、ウィンドウフォームにドラッグできません。

再構築を試みました。また、「bin」ディレクトリを削除して、すべて再構築を強制しました。

VS2008でユーザーコントロールをツールボックスに入力するにはどうすればよいですか?

72
Robert

この設定を確認してください:

[ツール]> [オプション]> [Windowsフォームデザイナー]> [一般]:AutoToolboxPopulate

これを機能させるには、Trueに設定する必要があります。

80
Ryan Lundy
  1. プロジェクトをビルドして、確実にコンパイルします。

  2. ユーザーが制御したいフォームで、ツールボックスを開き、右クリックして「アイテムを選択」を選択します

  3. 手順1でコンパイルした.exeまたはdllを参照します。

  4. ユーザーコントロールの横にチェックマークが付いていることを確認して、[OK]を押します。

  5. ユーザーコントロールがツールボックスに表示されるはずなので、フォームにドラッグします。

これは、 同様の質問に対するカランサスの回答 から採用されています。

31
Don Kirkby

私の場合、AutoToolboxPopulateは既に設定されています(Visual C#2010 Express)。

ただし、新しいユーザーコントロールを実際に表示するには、ツールボックスのプロパティから[すべて表示]をアクティブにする必要がありました(右クリック)。

19
Maxime Larocque

これまで、ツールボックスにユーザーコントロールが表示されない問題はありませんでした。プロジェクトをビルドすると、表示されるだけです。その後、今日は動作しません。検索後、私は次のことを試しましたが、まだ喜びはありません。

  • [ツール]> [オプション]> [Windowsフォームデザイナー]> [一般]:AutoToolboxPopulate
  • ツール>オプション>テキストエディター> XMAL>その他:AutoToolboxPopulate
  • VS設定をデフォルトにリセットします

成功せずに動作するように試行錯誤を繰り返した後、デフォルト名を受け入れる新しいWPF Windowsプロジェクトを作成し、ユーザーコントロールを追加しました。プロジェクトを構築し、ユーザーコントロールは以前と同じように表示されました。

次に、プロジェクトまたはwpfウィンドウファイルに何か問題があると思いました。プロジェクトを削除し、新しいプロジェクトを作成して、新しいコントロールを追加しました。プロジェクトをビルドしましたが、機能しませんでした。

私が行った唯一の違いは、プロジェクトの名前を選択することでした。名前に「WPFアプリケーション」という名前を入れました。

プロジェクトを再度削除し、スペースなしで「WPFApplication」と呼ばれる新しいプロジェクトを再度作成し、ユーザーコントロールを追加しました。それを構築し、ユーザーコントロールが表示されました。

ビルド時にツールボックスにユーザーコントロールを自動的に表示したい場合は、プロジェクト名にスペースを使用しないでください。この投稿が他の誰かの無駄な時間を節約することを願っています。

11
John Petrak

ユーザーコントロールがツールボックスに表示されないもう1つの理由は、ユーザーコントロールにデフォルトコンストラクターがない場合です。

6
wlf

また、ユーザーコントロールに有効な名前空間があることを再確認してください。

名前空間のないコントロールはツールボックス内に配置されないことがわかりました。

5
SoMoS

通常、ソリューションを構築する必要があります。それはほとんど常に私のために動作します。

4
Filip Frącz

同じ問題がありました。多くのグーグル検索の後、何も見つかりませんでしたが、偶然、ユーザーコントロールを作成したプロジェクトと同じプロジェクトにいる間にツールボックスをクリックすると、「すべて表示 "の場合、プロジェクトと同じ名前のグループがツールボックスの上部に表示され、ユーザーコントロールを見つけることができます。これで、目的のフォームにコントロールを追加できます。

3
Dylan

与えられたすべての指示とは別に(ツール>オプション> Windowsフォームデザイナー>一般:AutoToolboxPopulate)+ソリューションを構築する必要があります(私にとっては明らかです)、おそらくクラスアクセス修飾子に注意を払う必要があります:パブリック。コントロールを作成したばかりで、ツールボックスリストに表示されず、理由もわかりませんでした。設定後

public class  yourClass:control {}

リストに登場したよりも。 ;)これが他の人を助けることを願っています。

3
Alexa Adrian

私のコントロールはパブリックで、[ツールボックスアイテムの選択]ダイアログでチェックされましたが、まだ表示されていませんでした。

これは最終的に私のために働いたものです:

ツールボックスのどこかを右クリックし、「アイテムを選択」をクリックします。私のアイテムを見つけたとき、すでにチェックされていました。次に、アイテムのチェックを外し、[OK]をクリックしました。次に、ツールボックスをもう一度右クリックしてアイテムを検索しました...アイテムがなくなったので、[参照]をクリックし、obj/x86/debugフォルダーに移動して、exeを選択しました。その後、アイテムはツールボックスに正しく追加されました。

VSのバグだと思います。

3
Chriszimort

ToolStripItems(たとえばToolStripStatusLabel)で作業している可能性のある人のために、ドロップダウンメニュー(StatusStripのような)に派生コントロールを実際に表示するには、 クラスをpublicに設定する必要がありますその後、ソリューションをビルドします。

また、クラスのデザイナー属性も忘れないでください。次のようなものです。

using System.Windows.Forms.Design;

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public class MyStatusLabel : ToolStripStatusLabel
{
}

それを正しくするためにしばらく時間がかかりました。これが誰かの時間を節約できることを願っています。

3
Dan7

ここに私の問題がありました:いくつかの引数を受け入れるコントロールに新しいコンストラクタを追加しましたが、空のコンストラクタを明示的に再宣言していませんでした!ツールボックスには、空のコンストラクターを持つコントロールのみを含めることができます。一般に、vbでクラスを設計する場合、暗黙的に定義された空のコンストラクターがあります(つまり、宣言する必要はありません)。しかし、独自のコンストラクターの設計を開始するとすぐに、この空のコンストラクターは消えるため、コード内で明示的に再定義する必要があります!とにかく、ほとんどの経験豊富なvbコーダーはすでにこれをすべて知っていますが、これが私のような初心者の助けになることを願っています:)。

2
BrianEsler

ビルド出力ディレクトリを確認してください。何らかの理由でプロジェクトのbin \ディレクトリ以外の場所に出力を構築している場合、コントロールはツールボックスに表示されません。

2
Russell

私の場合、エラーの原因は、コントロールの.dllへのパスが長すぎることです。私はそれを少し縮め、すべてがうまく機能するようになりました。

また、パス内の特別な記号(例:#を使用)がコントロールの表示に影響することもわかりました。

それが問題を解決することを願っています。

1
Alex Urazaev

上記のすべてが失敗する可能性があります。

新しいユーザーコントロール(TestControl)を作成して修正し、Visual Studioをトリガーして、プロジェクトのコントロールタブ+コントロールをツールボックスに魔法のように追加しました。次に、テストコントロールを削除しました。

ちなみに、VS 2008の自動化されたWindows更新プログラムを最近インストールした後、これが起こりました。

1
codenheim

私が通常していることは、新しいタブを作成し、そのタブにexe/dllを追加することです...ロード時間と一般的な面倒のために、そのソリューションにあまり快適ではありません。

友人がこれをスピードアップする方法を教えてくれました。作成する新しいコントロールごとに、ツールボックスなどで[アイテムの選択...]をクリックする代わりに、MyCustomControlsという名前のファイルを作成し、そこでカスタムコントロールを作成できます。

これで、「アイテムを選択...」を実行し、このファイルを一度追加するだけで済みます。後で新しいコントロールを追加することにした場合は、MyCustomControlsに作成してから再構築します。
ツールボックスに新しいコントロールが追加されます。 (AutoToolboxPopulateがある場合は、通常のコンパイルで自動的に表示されます)

多くの場合、クラスを「ファイルごとに1つのクラス」に分けたいため、これは残念です。 VSが自分のやり方でやりたくないという理由だけで、コードアーキテクチャを台無しにしなければならないのは恐ろしいことです。 :)

私はこの解決策にあまり慣れていませんが、何かを素早く行う必要があり、ファイル内の複数のユーザーコントロールを気にかけない、または単に怠けている場合、これはあなたにぴったりかもしれません。 :)

1
DavidMB

それでもvstudioツールボックスにユーザーコントロールが表示されない理由が見つからない場合。その後、別のビジュアルスタジオでvstudioをデバッグできます。 ここで方法を見つけることができます

1
stivoberlin

他のすべての回答をたどってみたがstillが機能しない場合は、次のように修正しました。

  • コントロールを含むプロジェクトを右クリックします。
  • Propertiesを選択します。
  • Build設定カテゴリで、Register for COM interopがチェックされます。
1
Forest Kunecke

まあ、これが働いた以外は何も私のために働いていませんでした...

  1. ソリューションで新しいプロジェクトを作成し、このプロジェクトで機能するので、このプロジェクトを使用し始めました
  2. ずっと遊んで、私はcsprojファイルのxmlを調整して、同じソリューションの他のプロジェクトの何が悪いのかを見つけ始め、それが機能していないように見えたのでリセットしました
  3. 私のプロジェクトで再び魔法のように働いています

あまり良い解決策ではありませんが、次の手順を試してください

  1. 新しいソリューション/プロジェクトで機能するかどうかを確認します。
  2. 同じソリューションのまったく新しいプロジェクトで機能するかどうかを確認する
  3. #2が機能する場合、.csprojファイルを比較することもできます。
1
Dean Hiller

私はほんの数時間前にこのtrapに陥りました。
カスタムユーザーコントロールを備えた.NET 2.0 Windowsアプリケーションプロジェクトがあります。うまくいきました。そこで、プロジェクトを少しきれいにするために、サブフォルダーでファイルを注文することにしました。
その後、Visual Studio 2010デザイナーはフォームの読み込みを停止し、ToolBoxにはコントロールが表示されなくなります。
プロジェクトルートのソースファイルを元に戻し、ToolBoxをリセットしましたが、何も機能していないようです。その後、ReSharperの「未使用の参照を削除」を使用したことを思い出したので、未使用の参照を戻す、特にSystem.Data:解決しようとしました:O理由は言えませんが、これでうまくいきました。
私の経験が他の人に役立つことを願っています。 :)
バイ、ナンド

既にいじくり回してみました:

  • [ツール]> [オプション]> [Windowsフォームデザイナー]> [一般]:AutoToolboxPopulate
  • ツール>オプション>テキストエディター> XMAL>その他:AutoToolboxPopulate
  • デフォルトのコンストラクタを作成しました
  • プロジェクトをビルドする/ツールボックスをリセットして、手動でタブを追加する

それでも、まだグレー表示されています。

パスの長さを確認し、絶対パスで使用されている文字を確認します。

「C:\ Users\myName\myCompany\R&D\Projects」にプロジェクトがありました
そして数時間後に"R&D"が問題であることが判明しました。
」は、ツールボックスでユーザーコントロール項目を有効にすることを許可しませんでした。

1
G.Y

カスタムコントロールを追加する前に、現在のプロジェクトの.Netバージョンと互換性があることを確認してください。

VS2008上のWindows CE 5.0および.Net Compact v3.5のプロジェクトのツールボックスにカスタムコントロールを追加しようとしていました。以前の提案をすべて行いましたが、何も機能しませんでした。 「すべて表示」がチェックされている場合、コントロールは表示されますが、「アイテムの選択」メニューがチェックされていてもグレー表示されます。

.Net v2.0で新しいプロジェクトを作成しましたが、完全に機能しました。

0
Aouffen

症状1:フォーム、ユーザーコントロール、およびコンポーネントのデザインビューが失敗しました!

  • フォームデザインビューが失敗し、「ユーザーコントロール」が見つかりませんというメッセージが表示されました。
  • フォームデザインビューを動作させることができた場合、非常に不安定であり、すべての変更が加えられたため、すべて破損していました。

症状2:ツールボックスのUserControl&コンポーネント

  • ツールボックスでグレー表示され、文字化けした名前が表示された
  • ツールボックスのコンテキストメニューの[アイテムを選択]に、名前が文字化けして名前空間が表示されない

解決策:UserControlの背後にあるvbでスコープをPublicに設定し、コンポーネント

0
Buddha Bear

プロジェクトパスを確認し、などを避けます.

ソリューションをdrive:\work\c#\folder\からdrive:\work\folderに移動し、問題を解決しました。

0
user3611840

ユーザーコントロールをツールボックスに追加しようとすると(ツールボックスを右クリックし、アイテムを選択し、DLLを選択します)、DLLにコントロールがなかったというメッセージが表示されます。

とにかく、VSでmy DLLにフォームを作成し、UserControlを追加しようとすることで、問題は解決しました。デフォルトのコンストラクターがないことを示すエラーメッセージが表示されました。

public UserControl() {
...
}

有効な引数が何であるかを知ることができないため、設計者はこれを必要とします。空白のコンストラクターをUserControlに追加すると、問題なくツールボックスに追加されました。

0
Martin

私はx64専用アプリケーションをビルドしようとしていたので、プラットフォームターゲットはもちろんx64に設定されていました。

ただし、2016年であっても、Visual Studio(devenv.exe)は依然として32ビットプロセスであり、64ビットアセンブリを読み込むことはできません。 Visual Studioのビット数を確認するには、タスクマネージャーを開き、プロセスの名前で*32を確認します。

ツールボックスのコントロールを表示する回避策:プロジェクト設定でプラットフォームターゲットをAny CPUに設定します。必要に応じて、デバッグおよびリリースビルドでそれを行います。

0
Thomas Weller

前述のように、 here ツールボックスにユーザーコントロールを読み込むようにVisual Studioに指示する必要があります。

[ToolboxItem(true)]
public class PanelTitle : LabelControl  {
// Whatever code to override LabelControl here...
}
0
hamed

UserControlで、Newが宣言されていることを確認してくださいPublic。 Sub New(デフォルトはFriend)を宣言しただけでは表示されません。

0
smirkingman