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?
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.
Construisez votre projet pour vous assurer qu'il est compilé.
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"
Accédez à votre fichier .exe ou DLL que vous avez compilé à l'étape 1.
assurez-vous que votre contrôle utilisateur est coché, puis appuyez sur OK.
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 .
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.
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.
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.
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.
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.
Généralement, vous devez créer la solution. Cela fonctionne presque toujours pour moi.
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é!
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.
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.
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 public
puis 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.
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 :).
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.
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.
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.
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. :)
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 .
Si vous avez essayé de suivre toutes les autres réponses et que still ne fonctionne pas, voici ce qui a été résolu:
Properties
.Build
settings, assurez-vous que Register for COM interop
est coché.Eh bien, rien ne fonctionnait pour moi sauf que cela fonctionnait ...
Pas une très bonne solution, mais vous devriez essayer ces étapes
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
En vous fournissant déjà essayé de bricoler avec:
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.
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é.
Symptôme 1: Les Vues de conception pour Form, UserControl et Component étaient ÉCHEC!
Symptôme 2: Le UserControl & Component dans la Boîte à outils
Solution: définissez la portée sur Public dans le vb derrière UserControl et le composant
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.
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.
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.
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...
}
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).