web-dev-qa-db-fra.com

Contrôles utilisateur n'apparaissant pas dans la boîte à outils

J'ai quelques UserControls que j'ai créés dans ProjectA. J'ai ProjectB qui a un formulaire Windows sur lequel je veux mettre les contrôles. Ces deux projets constituent une solution unique. Il y a une référence à ProjectA de ProjectB pour qu'il puisse "voir" les UserControls.

Toutefois, les contrôles utilisateur n'apparaissent pas dans la boîte à outils pour que je puisse les faire glisser vers le formulaire Windows.

J'ai essayé de reconstruire. J'ai également supprimé le répertoire 'bin' pour forcer une reconstruction complète.

Comment faire en sorte que VS2008 remplisse la boîte à outils avec mes contrôles utilisateur?

71
Robert

Vérifiez ce paramètre:

Outils> Options> Concepteur Windows Forms> Général: AutoToolboxPopulate

Il doit être défini sur True pour que cela fonctionne.

80
Ryan Lundy
  1. Construisez votre projet pour vous assurer qu'il est compilé.

  2. Avec le formulaire sur lequel vous souhaitez que votre contrôle utilisateur, ouvrez la boîte à outils, faites un clic droit et sélectionnez "Choisir des éléments"

  3. Accédez à votre fichier .exe ou DLL que vous avez compilé à l'étape 1.

  4. assurez-vous que votre contrôle utilisateur est coché, puis appuyez sur OK.

  5. Votre contrôle utilisateur doit apparaître dans la boîte à outils, alors faites-le glisser sur votre formulaire.

Ceci est adapté de la réponse de Calanus à une question similaire .

30
Don Kirkby

Dans mon cas, AutoToolboxPopulate était déjà défini (Visual C # 2010 Express).

Cependant, je devais activer "Afficher tout" dans les propriétés de la Boîte à outils (clic droit) pour voir mes nouveaux contrôles utilisateur.

19
Maxime Larocque

Jusqu'à maintenant, je n'ai rencontré aucun problème avec les contrôles utilisateur qui n'apparaissaient pas dans la boîte à outils. Construisez le projet et ça se présente. Alors aujourd'hui ne fonctionne pas. Après une recherche, j'ai suivi, mais toujours pas de joie.

  • Outils> Options> Concepteur Windows Forms> Général: AutoToolboxPopulate 
  • Outils> Options> Editeur de texte> XMAL> Divers: AutoToolboxPopulate 
  • Réinitialiser les paramètres du VS à la valeur par défaut 

Ainsi, après quelques heures passées à essayer de le faire fonctionner sans succès, j'ai créé un nouveau projet de fenêtres WPF acceptant le nom par défaut et ajouté un contrôle utilisateur . Le projet a été construit et le contrôle utilisateur est apparu comme il l'a toujours été.

J'ai alors pensé que quelque chose n'allait peut-être pas avec mon projet ou le fichier de fenêtre wpf . Supprimé le projet, en a créé un nouveau et ajouté un nouveau contrôle . Le projet a été construit mais cela n'a pas fonctionné.

La seule chose que j'ai faite était de choisir un nom pour le projet, pour lequel j'ai inclus un espace dans le nom "Application WPF". 

Suppression du projet à nouveau et création d'un nouveau projet appelé "WPFApplication" sans espace et ajout d'un contrôle utilisateur. Construit et le contrôle de l'utilisateur est apparu.

Si vous voulez que usercontrols apparaisse automatiquement dans la boîte à outils lors de la construction, n'utilisez pas d'espaces dans le nom du projet. Espérons que cet article sauve quelqu'un d'autre d'une tonne de temps perdu.

11
John Petrak

Une autre raison pour laquelle les contrôles utilisateur peuvent ne pas apparaître dans la boîte à outils est s'ils n'ont pas de constructeur par défaut.

6
wlf

Vérifiez également que vos contrôles utilisateur ont un espace de noms valide. 

Je viens de constater que les contrôles sans espace de noms ne sont pas placés dans la Boîte à outils.

5
SoMoS

Généralement, vous devez créer la solution. Cela fonctionne presque toujours pour moi.

4
Filip Frącz

J'ai eu le même problème. Après beaucoup de recherches sur Google, je n'ai rien trouvé, mais par hasard, j'ai découvert que si vous cliquez sur la boîte à outils alors que vous êtes dans le même projet que vous avez créé le contrôle utilisateur, et cochez la case " tout afficher " , un groupe portant le même nom que votre projet apparaîtra en haut de la boîte à outils dans lequel vous pourrez trouver votre contrôle utilisateur dans . Vous pouvez maintenant ajouter votre contrôle sur le formulaire souhaité!

3
Dylan

Hormis toutes les instructions qui vous ont été données (Outils> Options> Concepteur Windows Forms> Général: AutoToolboxPopulate) + vous devez générer la solution (ce qui est évident pour moi), vous devrez probablement faire attention au modificateur d'accès de classe: il DOIT être PUBLIQUE. Je viens de créer un contrôle et ne figurais pas dans la liste des boîtes à outils et je ne savais pas pourquoi. Donc après set 

public class  yourClass:control {}

qu'il apparaissait dans la liste. ;) J'espère que cela aidera les autres.

3
Alexa Adrian

Mon contrôle était public, il a été coché dans la boîte de dialogue 'Choisir les éléments de la boîte à outils', mais il ne s'affiche toujours pas.

C'est ce qui a finalement fonctionné pour moi:

Faites un clic droit quelque part dans la boîte à outils, puis cliquez sur "Choisir les éléments". Lorsque j'ai trouvé mon article, il était déjà vérifié. J'ai ensuite décoché l'élément et cliqué sur OK. Ensuite, j'ai à nouveau cliqué avec le bouton droit de la souris sur la boîte à outils et recherché mon élément ... il avait disparu. J'ai donc cliqué sur Parcourir, puis sur le dossier obj/x86/debug et sélectionné mon fichier. L'élément a ensuite été ajouté correctement à la boîte à outils.

Je pense que c'est un bogue VS.

3
Chriszimort

Pour que quelqu'un travaille avec ToolStripItems (par exemple ToolStripStatusLabel), pour que votre contrôle dérivé apparaisse dans le menu déroulant (tel que celui de StatusStrip), vous devez définir la classe sur publicpuis construire le Solution.

N'oubliez pas non plus l'attribut designer de votre classe, par exemple:

using System.Windows.Forms.Design;

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

Cela m'a pris du temps pour bien faire les choses. Espérons que cela puisse sauver du temps à quelqu'un d'autre.

3
Dan7

Voici mon problème: J'avais ajouté un nouveau constructeur pour mon contrôle qui acceptait quelques arguments, mais je n'avais pas explicitement déclaré le constructeur vide! La boîte à outils ne peut inclure que des contrôles qui ont des constructeurs vides . En général, lorsque vous concevez une classe dans vb, elle a un constructeur vide défini implicitement (ce qui signifie que vous n'avez pas besoin de déclarer. MAIS, dès que vous commencez à concevoir vos propres constructeurs, ce constructeur vide disparaît. Vous devez donc explicitement le redéfinir dans votre code!. les débutants comme moi :). 

2
BrianEsler

Vérifiez votre répertoire de sortie de la construction. Si, pour une raison quelconque, vous générez votre sortie ailleurs que dans le répertoire bin\project du projet, vos contrôles n'apparaîtront pas dans votre boîte à outils.

2
Russell

Dans mon cas, la raison de l'erreur était la longueur excessive d'un chemin d'accès au fichier .dll de mon contrôle. Je l'avais un peu rétréci et tout a bien fonctionné.

J'ai aussi découvert que les symboles spéciaux (par exemple, j'ai utilisé #) dans un chemin affectent un affichage de contrôle.

J'espère que cela résoudra le problème.

1
Alex Urazaev

Il est possible que tout ce qui précède échoue.

Je l'ai corrigé en créant un nouveau contrôle utilisateur (TestControl) et cela a obligé Visual Studio à ajouter par magie l'onglet + contrôles de mon projet dans la boîte à outils. Ensuite, je viens de supprimer le contrôle de test.

C'est ce qui m'est arrivé après l'installation récente d'une mise à jour automatisée de Windows VS 2008, en passant.

1
codenheim

Ce que je fais habituellement, c’est de créer un nouvel onglet et d’ajouter le fichier exe/dll à cet onglet ... Pas très à l’aise avec cette solution en raison du temps de chargement et des problèmes généraux.

Un ami m'a montré un moyen d'accélérer le processus. Au lieu d'avoir à cliquer sur "Choisir les éléments ..." dans la boîte à outils, etc., pour chaque nouveau contrôle que vous créez - Vous pouvez créer un fichier nommé MyCustomControls et créer vos contrôles personnalisés.

Maintenant, il ne vous reste plus qu'à faire "Choisir les éléments ..." et à ajouter ce fichier UNE FOIS. Si vous décidez ultérieurement d'ajouter un nouveau contrôle, créez-le dans MyCustomControls puis reconstruisez-le.
Votre boîte à outils aura alors votre nouveau contrôle. (Il sera affiché automatiquement avec une compilation régulière si vous avez AutoToolboxPopulate je pense)

C'est regrettable, car vous voulez souvent séparer les classes en "une classe par fichier". Il est horrible de devoir ruiner votre architecture de code simplement parce que VS ne veut pas le faire à votre façon. :)

Je ne suis pas très à l'aise avec cette solution non plus, mais si vous devez agir rapidement et que vous ne vous souciez pas de plusieurs contrôles utilisateur dans un fichier ou que vous êtes simplement paresseux, cela pourrait vous convenir. :)

1
DavidMB

Si vous ne trouvez toujours pas pourquoi votre boîte à outils vstudio n’est pas renseignée avec vos contrôles utilisateur. Ensuite, vous pouvez déboguer vstudio avec un autre studio visuel. Ici vous pouvez trouver comment .

1
stivoberlin

Si vous avez essayé de suivre toutes les autres réponses et que still ne fonctionne pas, voici ce qui a été résolu:

  • Faites un clic droit sur votre projet contenant votre contrôle.
  • Sélectionnez Properties.
  • Dans la catégorie Build settings, assurez-vous que Register for COM interop est coché.
1
Forest Kunecke

Eh bien, rien ne fonctionnait pour moi sauf que cela fonctionnait ...

  1. Je crée un nouveau projet dans ma solution, et pour ce projet cela fonctionne donc j'allais commencer à utiliser celui-ci
  2. Après avoir joué, j'ai commencé à peaufiner le xml du fichier csproj pour découvrir ce qui n'allait pas avec mon autre projet dans la même solution, puis je l'ai réinitialisé car il ne semblait pas fonctionner.
  3. Cela fonctionne à nouveau comme par magie dans mon projet

Pas une très bonne solution, mais vous devriez essayer ces étapes

  1. Voir si cela fonctionne dans une toute nouvelle solution/projet. 
  2. Voir si cela fonctionne dans un tout nouveau projet dans la même solution
  3. Si le n ° 2 fonctionnait, comparez peut-être des fichiers .csproj ... d'une manière ou d'une autre, le mien a recommencé à fonctionner pendant que je le faisais (c'est très frustrant).
1
Dean Hiller

Je suis tombé dans ce piège il y a à peine deux heures.
J'ai un projet d’application Windows .NET 2.0 avec des contrôles d’utilisateur personnalisés; cela a bien fonctionné. J'ai donc décidé de commander mes fichiers dans des sous-dossiers, afin de rendre mon projet un peu plus propre.
Après cela, Visual Studio 2010 Designer a cessé de charger mes formulaires et ToolBox n’affiche plus mes contrôles.
J'ai paniqué, retournant les fichiers sources dans la racine du projet, réinitialisant ToolBox, mais rien ne semblait fonctionner. Après cela, je me suis rappelé que j'avais utilisé ReSharper "Supprimer les références non utilisées". J'ai donc essayé de remettre les références inutilisées , en particulier System.Data : problème résolu! : O .__ Je ne peux pas vous dire pourquoi, mais cela a fonctionné pour moi.
J'espère que mon expérience pourra aider quelqu'un d'autre. :)
Au revoir, Nando

1

En vous fournissant déjà essayé de bricoler avec:

  • Outils> Options> Concepteur Windows Forms> Général: AutoToolboxPopulate 
  • Outils> Options> Editeur de texte> XMAL> Divers: AutoToolboxPopulate 
  • créé un constructeur par défaut
  • construire votre projet/réinitialiser la boîte à outils et ajouter manuellement votre onglet

Pourtant, vous le voyez toujours grisé ..

Vérifiez votre longueur du chemin et vérifiez les caractères utilisés dans votre chemin absolu

J'avais un projet résidant dans "C:\Utilisateurs\monNom\maSociété\R & D\Projets" 
Et après quelques heures ont découvert que le "R & D" est le problème ..
Le ' & ' n'autorisait pas l'activation de mes éléments usercontrol dans ma boîte à outils.

1
G.Y

Avant d'essayer d'ajouter un contrôle personnalisé, assurez-vous qu'il est compatible avec la version .Net de votre projet actuel.

J'essayais d'ajouter un contrôle personnalisé à la boîte à outils d'un projet pour Windows CE 5.0 et .Net Compact v3.5 sur VS2008 . J'ai fait toutes les suggestions précédentes, mais rien n'a fonctionné. Le contrôle apparaît lorsque "Tout afficher" est coché mais il est grisé, même si le menu "Choisir les articles" est coché.

J'ai créé un nouveau projet avec .Net v2.0 et cela a parfaitement fonctionné. 

0
Aouffen

Symptôme 1: Les Vues de conception pour Form, UserControl et Component étaient ÉCHEC!

  • Mon affichage de conception de formulaire échouait avec le message "ne peut pas trouver le" contrôle de l'utilisateur "."
  • Si je pouvais faire en sorte que le mode Création de formulaire fonctionne, il était très instable et corrompu, tout ce qui a été bouleversé.

Symptôme 2: Le UserControl & Component dans la Boîte à outils  

  • Étaient grisés dans la boîte à outils et montraient un nom déformé
  • "Choisir un élément" dans le menu contextuel de la Boîte à outils indiquait un nom tronqué et aucun espace de nom 

Solution: définissez la portée sur Public dans le vb derrière UserControl et le composant

0
Buddha Bear

Vérifiez le chemin du projet, évitez & , # etc.

J'ai déplacé ma solution de drive:\work\c#\folder\ à drive:\work\folder et le problème a été résolu.

0
user3611840

Lorsque j'essayais d'ajouter UserControl à la boîte à outils (boîte de dialogue avec un clic droit, choisissez des éléments, sélectionnez ma DLL), un message indiquant qu'il n'y avait aucun contrôle dans ma DLL était affiché.

Quoi qu'il en soit, le problème a été résolu en essayant de créer un formulaire dans ma DLL dans VS et en ajoutant UserControl. Un message d'erreur indiquant qu'il n'y avait pas de constructeur par défaut

public UserControl() {
...
}

Le concepteur en a besoin car il ne sait pas quels arguments sont valides. Une fois que j'ai ajouté un constructeur vierge à UserControl, il a été ajouté à la boîte à outils sans problème.

0
Martin

J'essayais de créer une application uniquement x64, donc ma cible de plate-forme était définie sur x64 bien sûr.

Cependant, même en 2016, Visual Studio (devenv.exe) est toujours un processus 32 bits et ne peut pas charger les assemblys 64 bits. Pour vérifier le nombre de bits de votre Visual Studio, ouvrez le Gestionnaire des tâches et recherchez *32 dans le nom du processus.

Solution de contournement pour afficher les contrôles dans la boîte à outils: définissez la cible de la plateforme sur Any CPU dans les paramètres du projet. Faites cela pour la construction Debug and Release, si nécessaire.

0
Thomas Weller

Comme mentionné ici , vous devez indiquer à Visual Studio de charger votre contrôle utilisateur dans la boîte à outils. 

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

Dans votre UserControl, assurez-vous que New est déclaré Public. Il ne s'affichera pas s'il est simplement déclaré Sub New (qui est défini par défaut sur Friend).

0
smirkingman