it-swarm.com.de

Benutzersteuerelemente werden nicht in der Toolbox angezeigt

Ich habe einige UserControls, die ich in ProjectA erstellt habe. Ich habe ProjectB, das ein Windows-Formular hat, in dem ich die Steuerelemente einfügen möchte. Beide Projekte befinden sich in einer einzigen Lösung. Es gibt einen Verweis auf ProjectA von ProjectB, damit es die UserControls "sehen" kann.

Die UserControls werden jedoch nicht in der Toolbox angezeigt, damit ich sie in das Windows-Formular ziehen kann.

Ich habe versucht, wieder aufzubauen. Ich habe auch das 'bin'-Verzeichnis gelöscht, um eine Neuerstellung aller zu erzwingen.

Wie bekomme ich, dass VS2008 die Toolbox mit meinen UserControls auffüllt?

71
Robert

Überprüfen Sie diese Einstellung:

Extras> Optionen> Windows Forms-Designer> Allgemein: AutoToolboxPopulate

Es sollte auf True gesetzt sein, damit dies funktioniert.

80
Ryan Lundy
  1. Erstellen Sie Ihr Projekt, um sicherzustellen, dass es kompiliert wird.

  2. Öffnen Sie die Toolbox, klicken Sie mit der rechten Maustaste und wählen Sie "Artikel auswählen".

  3. Navigieren Sie zu Ihrer EXE- oder DLL-Datei, die Sie in Schritt 1 kompiliert haben.

  4. vergewissern Sie sich, dass neben Ihrem Steuerelement ein Häkchen angezeigt wird, und drücken Sie OK.

  5. Ihr Benutzersteuerelement sollte in der Toolbox angezeigt werden. Ziehen Sie es in Ihr Formular.

Dies ist aus Calanus 'Antwort auf eine ähnliche Frage angepasst.

30
Don Kirkby

In meinem Fall war das AutoToolboxPopulate bereits festgelegt (Visual C # 2010 Express).

Ich musste jedoch "Alle anzeigen" in den Eigenschaften der Toolbox aktivieren (Rechtsklick), um meine neuen Benutzersteuerelemente anzuzeigen.

19
Maxime Larocque

Bisher hatte ich kein Problem damit, dass die Benutzersteuerelemente nicht in der Toolbox angezeigt werden. Baue das Projekt und es erscheint nur. Dann funktioniert heute nicht. Nach einer Suche ging ich durch, folgte aber immer noch keiner Freude.

  • Extras> Optionen> Windows Forms-Designer> Allgemein: AutoToolboxPopulate 
  • Extras> Optionen> Texteditor> XMAL> Misc: AutoToolboxPopulate 
  • Setzen Sie die VS-Einstellungen auf die Standardeinstellungen zurück 

Nach ein paar stundenlangen Versuchen, es ohne Erfolg zum Laufen zu bringen, erstellte ich ein neues WPF-Windows-Projekt mit dem Standardnamen und fügte eine Benutzersteuerung hinzu.

Ich dachte dann, dass etwas mit meinem Projekt oder der WFF-Fenster-Datei nicht stimmt. Das Projekt wurde entfernt, ein neues erstellt und ein neues Steuerelement hinzugefügt. Das Projekt wurde erstellt, aber es funktionierte nicht.

Das einzige, was ich anders gemacht habe, war, einen Namen für das Projekt zu wählen, den ich mit einem Leerzeichen in den Namen "WPF Application" aufgenommen habe. 

Das Projekt wurde erneut entfernt und ein neues mit dem Namen "WPFApplication" ohne Leerzeichen erstellt und ein Benutzersteuerelement hinzugefügt. Es wurde gebaut und die Benutzersteuerung wurde angezeigt.

Wenn Benutzersteuerelemente beim Erstellen automatisch in der Toolbox angezeigt werden sollen, verwenden Sie keine Leerzeichen im Projektnamen. Hoffentlich spart dieser Post jemand anderen eine Menge Zeitverschwendung.

11
John Petrak

Ein weiterer Grund dafür, dass Benutzersteuerelemente möglicherweise nicht in der Toolbox angezeigt werden, ist der Standardkonstruktor.

6
wlf

Vergewissern Sie sich auch, dass Ihre Benutzersteuerelemente über einen gültigen Namespace verfügen. 

Ich habe gerade festgestellt, dass Steuerelemente ohne Namespace nicht in der ToolBox platziert werden.

5
SoMoS

Normalerweise müssen Sie die Lösung erstellen. Das funktioniert fast immer bei mir.

4
Filip Frącz

Ich hatte das gleiche Problem. Nach langem Googeln habe ich nichts gefunden, aber durch Zufall habe ich herausgefunden, dass Sie auf die Toolbox klicken, während Sie sich in demselben Projekt befinden, in dem Sie das Benutzersteuerelement erstellt haben, und " show all " Anschließend wird oben in der Toolbox eine Gruppe mit demselben Namen wie Ihr Projekt angezeigt, in der Sie Ihr Benutzersteuerelement in ..__ finden. Jetzt können Sie Ihr Steuerelement in Ihrem gewünschten Formular hinzufügen.

3
Dylan

Abgesehen von allen Anweisungen (Extras> Optionen> Windows Forms-Designer> Allgemein: AutoToolboxPopulate) + müssen Sie die Lösung erstellen (was für mich selbstverständlich ist), und Sie müssen wahrscheinlich auf den Zugriffsmodifizierer für die Klasse achten. Dies muss sein ÖFFENTLICHKEIT. Ich habe gerade ein Steuerelement erstellt und nicht in der Toolbox-Liste angezeigt. Ich wusste nicht, warum. Also nach dem Set 

public class  yourClass:control {}

als es in der Liste erschien. ;) Hoffe das hilft anderen.

3
Alexa Adrian

Mein Steuerelement war öffentlich, es wurde im Dialogfeld "Toolbox-Elemente auswählen" überprüft, aber es wurde immer noch nicht angezeigt.

Das hat mir endlich geholfen:

Klicken Sie mit der rechten Maustaste irgendwo in die Toolbox und klicken Sie auf "Elemente auswählen". Als ich meinen Artikel gefunden habe, wurde er bereits geprüft. Ich deaktivierte dann das Element und klickte auf OK. Als Nächstes habe ich wieder mit der rechten Maustaste auf die Toolbox geklickt und nach meinem Artikel gesucht. Der Artikel war nicht mehr vorhanden. Ich klickte auf Durchsuchen, navigierte zum Ordner obj/x86/debug und wählte mein Exe aus. Der Artikel wurde dann korrekt zur Toolbox hinzugefügt.

Ich denke, es ist ein VS-Fehler.

3
Chriszimort

Für jemanden, der möglicherweise mit ToolStripItems arbeitet (z. B. ToolStripStatusLabel), damit das abgeleitete Steuerelement tatsächlich im Dropdown-Menü angezeigt wird (z. B. das von StatusStrip), müssen Sie die Klasse auf publicsetzen und dann die Lösung.

Vergiss auch nicht das Designer-Attribut für deine Klasse, etwa so:

using System.Windows.Forms.Design;

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

Ich habe eine Weile gebraucht, um es richtig zu machen. Hoffentlich kann dies die Zeit einer anderen Person sparen.

3
Dan7

Hier war mein Problem: Ich hatte einen neuen Konstruktor für meine Kontrolle hinzugefügt, der einige Argumente akzeptierte, aber ich hatte den leeren Konstruktor nicht explizit erneut deklariert! Die Toolbox kann nur Steuerelemente enthalten, die leere Konstruktoren enthalten .. Wenn Sie eine Klasse in vb entwerfen, wird im Allgemeinen ein leerer Konstruktor implizit definiert (dh, Sie müssen keine deklarieren). ABER, sobald Sie Ihre eigenen Konstruktoren entwerfen, verschwindet dieser leere Konstruktor, und Sie müssen ihn explizit in Ihrem Code neu definieren! Jedenfalls ist mir bekannt, dass die meisten erfahrenen VB-Codierer dies bereits wissen, aber hoffentlich kann dies einigen helfen Neulinge wie ich :). 

2
BrianEsler

Überprüfen Sie das Build-Ausgabeverzeichnis. Wenn Sie aus irgendeinem Grund Ihre Ausgabe an einem anderen Ort als dem Projektverzeichnis\erstellen, werden Ihre Steuerelemente nicht in Ihrer Toolbox angezeigt.

2
Russell

In meinem Fall war der Fehlergrund ein zu langer Pfad zu der DLL-Datei meines Steuerelements. Ich hatte es etwas geschrumpft und alles funktionierte gut.

Ich fand auch heraus, dass die speziellen Symbole (z. B. #) in einem Pfad eine Kontrollanzeige beeinflussen.

Hoffe, es löst das Problem.

1
Alex Urazaev

Es ist möglich, dass alle oben genannten Dinge versagen.

Ich habe das Problem behoben, indem ich ein neues Benutzersteuerelement (TestControl) erstellt habe, und es hat Visual Studio dazu veranlasst, die Steuerelementregisterkarte + Steuerelemente meines Projekts auf magische Weise in die Toolbox hinzuzufügen. Dann habe ich gerade die Testkontrolle gelöscht.

Dies ist mir passiert, nachdem ich kürzlich ein automatisiertes Windows 2008-Update installiert hatte.

1
codenheim

Was ich normalerweise mache, ist das Erstellen eines neuen Tabs und das Hinzufügen der Exe/DLL zu diesem Tab ... Nicht mit dieser Lösung wegen der Ladezeit und des allgemeinen Ärgeres zu angenehm.

Ein Freund zeigte mir einen Weg, dies zu beschleunigen. Anstatt in der Toolbox usw. für jedes neue Steuerelement auf "Elemente auswählen ..." klicken zu müssen - Sie können eine Datei mit dem Namen MyCustomControls erstellen und dort Ihre benutzerdefinierten Steuerelemente erstellen.

Jetzt müssen Sie nur noch die Option "Artikel auswählen ..." ausführen und diese Datei einmal hinzufügen. Wenn Sie später entscheiden, ein neues Steuerelement hinzuzufügen, erstellen Sie es in MyCustomControls und erstellen Sie es anschließend neu.
Dann hat Ihre Toolbox Ihre neue Kontrolle. (Es wird automatisch bei einem regulären Kompilieren angezeigt, wenn Sie AutoToolboxPopulate haben).

Dies ist bedauerlich, da Sie häufig Klassen in "eine Klasse pro Datei" unterteilen möchten. Es ist schrecklich, dass Sie Ihre Code-Architektur ruinieren müssen, nur weil VS es nicht auf Ihre Art machen möchte. :)

Ich bin mit dieser Lösung auch nicht sehr vertraut, aber wenn Sie etwas schnell machen müssen und Sie sich nicht für mehrere Benutzersteuerelemente in einer Datei interessieren oder einfach nur faul sind, könnte dies für Sie gut passen. :)

1
DavidMB

Wenn Sie immer noch nicht finden können, warum Ihre vstudio-Toolbox nicht mit Ihren Benutzersteuerelementen gefüllt ist. Dann können Sie vstudio mit einem anderen visuellen Studio debuggen. Hier findest du wie .

1
stivoberlin

Wenn Sie versucht haben, allen anderen Antworten zu folgen und es noch nicht funktioniert, wurde Folgendes für mich behoben:

  • Klicken Sie mit der rechten Maustaste auf Ihr Projekt, das Ihre Kontrolle enthält.
  • Wählen Sie Properties.
  • Stellen Sie sicher, dass in der Kategorie Build die Option Register for COM interop aktiviert ist.
1
Forest Kunecke

Nun, nichts hat für mich funktioniert, außer das hat funktioniert ...

  1. Ich erstelle ein neues Projekt in meiner Lösung und für dieses Projekt funktioniert es, also wollte ich dieses Projekt verwenden
  2. Ich habe das xml der csproj-Datei geändert, um herauszufinden, was mit meinem anderen Projekt in der gleichen Lösung nicht stimmt, und dann habe ich es zurückgesetzt, da es scheinbar nicht funktioniert hat
  3. Es arbeitet jetzt wieder magisch in meinem Projekt

Keine sehr gute Lösung, aber Sie sollten diese Schritte ausprobieren

  1. Prüfen Sie, ob es in einer brandneuen Lösung/einem neuen Projekt funktioniert. 
  2. Prüfen Sie, ob es bei einem brandneuen Projekt in derselben Lösung funktioniert
  3. Wenn # 2 funktionierte, vergleiche vielleicht .csproj-Dateien ... irgendwie fing meine wieder an zu arbeiten, während ich dies tat (dies ist sehr frustrierend).
1
Dean Hiller

Ich bin vor ein paar Stunden in diese Falle geraten.
Ich habe ein .NET 2.0-Windows-Anwendungsprojekt mit einigen benutzerdefinierten UserControls. es hat gut funktioniert. Also habe ich beschlossen, meine Dateien in Unterordnern zu ordnen, um mein Projekt etwas sauberer zu machen.
Danach stoppte der Visual Studio 2010-Designer das Laden meiner Formulare und ToolBox zeigt meine Steuerelemente nicht mehr an.
Ich rastete aus, schob Quelldateien im Projektstamm zurück und stellte ToolBox zurück, aber es schien nichts zu funktionieren. Danach erinnerte ich mich, dass ich ReSharper "Remove Unused References" verwendete, also versuchte ich, nicht verwendete Referenz , insbesondere System.Data : zurückzusetzen, Problem gelöst! Ich kann dir nicht sagen warum, aber das hat für mich funktioniert.
Ich hoffe, meine Erfahrung kann jemand anderem helfen. :)
Tschüß Nando

Vorausgesetzt, Sie haben bereits versucht mit zu basteln:

  • Extras> Optionen> Windows Forms-Designer> Allgemein: AutoToolboxPopulate 
  • Extras> Optionen> Texteditor> XMAL> Misc: AutoToolboxPopulate 
  • einen Standardkonstruktor erstellt
  • erstelle dein Projekt/setze die Toolbox zurück und füge die Registerkarte manuell hinzu

Trotzdem siehst du es immer noch ausgegraut ..

Überprüfen Sie Ihre Pfadlänge und die in Ihrem absoluten Pfad verwendeten Zeichen

Ich hatte ein Projekt in "C:\Users\myName\myCompany\R & D\Projects" 
Und nach ein paar Stunden fand ich heraus, dass das "R & D" das Problem ist ..
Das ' & ' erlaubte nicht die Aktivierung meiner Benutzersteuerelemente in meiner Toolbox.

1
G.Y

Stellen Sie vor dem Hinzufügen eines benutzerdefinierten Steuerelements sicher, dass es mit der .NET-Version Ihres aktuellen Projekts kompatibel ist.

Ich habe versucht, der Toolbox ein benutzerdefiniertes Steuerelement für ein Projekt für Windows CE 5.0 und .Net Compact v3.5 auf VS2008 ... hinzuzufügen. Das Steuerelement wird angezeigt, wenn "Alle anzeigen" aktiviert ist, jedoch grau ist, obwohl das Menü "Elemente auswählen" aktiviert ist.

Ich habe ein neues Projekt mit .Net v2.0 erstellt und es hat perfekt funktioniert. 

0
Aouffen

Symptom 1: Die Design-Ansichten für Formular, Benutzersteuerelement und Komponente waren fehlerhaft!

  • Meine Formularentwurfsansicht schlug mit der Meldung fehl, dass "User Control" nicht gefunden werden konnte. "
  • Wenn ich die Formularentwurfsansicht zum Laufen bringen konnte, war sie sehr instabil und verderbt mit jeder Änderung.

Symptom 2: Die UserControl & Component in der Toolbox  

  • Wurden in der Toolbox ausgegraut und zeigten einen verstümmelten Namen
  • "Element auswählen" im Toolbox-Kontextmenü zeigte einen unleserlichen Namen und keinen Namensraum an 

Lösung: Setzen Sie den Bereich auf Public in der vb hinter UserControl & Component

0
Buddha Bear

Projektpfad überprüfen, & , # usw. vermeiden.

Ich habe meine Lösung von drive:\work\c#\folder\ nach drive:\work\folder verschoben und das Problem gelöst.

0
user3611840

Wenn ich versuchte, mein UserControl zur Toolbox hinzuzufügen (Rechtsklick-Toolbox, Elemente auswählen, DLL auswählen), wird eine Meldung angezeigt, die besagt, dass sich in meiner DLL keine Steuerelemente befinden.

Das Problem wurde jedoch gelöst, indem versucht wurde, ein Formular in meiner DLL in VS zu erstellen und das UserControl hinzuzufügen. In einer Fehlermeldung wird angezeigt, dass kein Standardkonstruktor vorhanden ist

public UserControl() {
...
}

Der Designer benötigt dies, weil er nicht wissen kann, was gültige Argumente sind. Nachdem ich dem UserControl einen leeren Konstruktor hinzugefügt hatte, wurde er ohne Probleme zur Toolbox hinzugefügt.

0
Martin

Ich habe versucht, nur eine x64-Anwendung zu erstellen. Daher wurde mein Plattformziel auf x64 gesetzt.

Allerdings ist Visual Studio (devenv.exe) auch 2016 noch ein 32-Bit-Prozess und kann keine 64-Bit-Assemblys laden. Öffnen Sie den Task-Manager, und überprüfen Sie den Namen des Prozesses auf *32.

Problemumgehung, um die Steuerelemente in der Toolbox anzuzeigen: Legen Sie das Plattformziel in den Projekteinstellungen auf Any CPU fest. Tun Sie dies für den Debug- und Release-Build, falls erforderlich.

0
Thomas Weller

Wie erwähnt here sollten Sie dem Visual Studio mitteilen, dass Sie Ihre Benutzersteuerung in die Toolbox laden sollen. 

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

Stellen Sie in Ihrem UserControl sicher, dass New als Public deklariert ist. Es wird nicht angezeigt, wenn es gerade als "Sub New" deklariert wurde (was standardmäßig "Friend" ist).

0
smirkingman