web-dev-qa-db-fra.com

Comment mettre un UserControl dans la boîte à outils Visual Studio

J'ai fait un contrôle utilisateur dans mon projet et, une fois le projet construit, je dois le mettre dans ma boîte à outils et l'utiliser comme contrôle commun. mais je ne peux pas. la UserControl est dans mon espace de noms de projet et j'ai essayé Choose Item dans le menu contextuel, mais je n'ai pas trouvé le moyen de l'ajouter. 

85
Saeed

Je suppose que vous utilisez VS2010 (c’est ce que vous avez qualifié la question de). remplissage automatique de la boîte à outils!

Allez dans Outils> Options> Concepteur Windows Forms> Général 

Au bas de la liste, vous trouverez Toolbox> AutoToolboxPopulate qui, lors d'une nouvelle installation, prend la valeur False. Définissez-le sur true, puis reconstruisez votre solution.

Bonjour, les contrôles utilisateur dans votre solution devraient être automatiquement ajoutés à la boîte à outils . Vous devrez peut-être également recharger la solution.

104
DaveF

Cliquez avec le bouton droit sur la barre d'outils, puis cliquez sur "Choisir un élément" dans le menu contextuel. Une boîte de dialogue avec les composants enregistrés apparaît. dans cette boîte de dialogue, cliquez sur "Parcourir" pour sélectionner votre assemblage avec le contrôle utilisateur que vous souhaitez utiliser.

PS . Cette Assemblée devrait être enregistrée avant.

34
Arseny

J'ai trouvé que le contrôle utilisateur doit avoir un constructeur sans paramètre, sinon il n'apparaîtra pas dans la liste. au moins c'était vrai dans vs2005.

21
scott

Utiliser VS 2010:

Disons que vous avez un projet Windows.Forms. Vous ajoutez un UserControl (disons MyControl) au projet et vous le concevez. Maintenant, vous voulez l'ajouter à votre boîte à outils.

Dès que le projet est construit avec succès une fois, il apparaîtra dans vos composants de framework. Cliquez avec le bouton droit de la souris sur la boîte à outils pour afficher le menu contextuel, sélectionnez "Choisir les éléments ...", puis recherchez le nom de votre contrôle (MyControl) sous l'onglet "Composants .NET Framework".

Avantage par rapport aux dll: vous pouvez modifier les contrôles dans le même projet que votre formulaire et le formulaire sera construit avec les nouveaux contrôles. Cependant, le contrôle ne sera disponible que pour ce projet.

Remarque: Si le contrôle comporte des erreurs de génération, résolvez-les avant de passer aux formulaires qui les contiennent ou le concepteur subit une crise cardiaque.

14
Nick

J'avais beaucoup de contrôles utilisateurs mais un refusait de s'afficher dans la Boîte à outils, même si j'ai reconstruit la solution et que cela avait été coché dans la boîte de dialogue Choisir les éléments ...

Solution: 

  1. Depuis Explorateur de solutions I Cliqué avec le bouton droit de la souris le fichier de contrôle de l'utilisateur incriminé et sélectionné Exclure du projet
  2. Reconstruire la solution
  3. Cliquez avec le bouton droit sur le contrôle utilisateur et sélectionnez Inclure dans le projet (en supposant que vous avez activé Afficher tous les fichiers dans l'explorateur Solution).

Remarque ceci nécessite également que l'option AutoToolboxPopulate soit activée. Comme le suggère @DaveF.

Solution de remplacement: Je ne suis pas sûr que cela fonctionne et je ne pouvais pas l'essayer car j'avais déjà résolu mon problème, mais si vous désactivez le contrôle de l'utilisateur dans la boîte de dialogue Choisir les éléments ..., cliquez sur OK, puis sur ouvrez-le et vérifiez le contrôle de l'utilisateur. Cela pourrait aussi fonctionner.

6
MoMo

Il y a deux façons.

  1. Dans votre projet d'origine, choisissez Fichier | Modèle d'exportation
    Sélectionnez ensuite ItemTemplate et suivez l’assistant. 

  2. Déplacez votre UserControl vers une ClassLibrary distincte (et corrigez les espaces de noms, etc.).
    Ajoutez une référence à la bibliothèque de classes à partir des projets qui en ont besoin. Ne vous embêtez pas avec le GAC ou quoi que ce soit, uniquement le fichier DLL. 

Je ne conseillerais pas de mettre un UserControl dans la boîte à outils normale, mais cela peut être fait. Voir la réponse de @Arseny

4
Henk Holterman

Autant que je sache, vous pouvez glisser-déposer votre contrôle utilisateur dans votre projet actuel vers la boîte à outils. Le problème est que lorsque vous choisissez un autre projet, le contrôle de l'utilisateur est parti. Je pense donc que vous devez créer un projet de bibliothèque de contrôle distinct:

Dans votre solution, ajoutez un nouveau projet. Toutefois, en tant que modèle de projet, choisissez "Bibliothèque de classes". Dans ce projet, ajoutez un contrôle utilisateur et faites tout ce que vous devez faire. Une fois que c'est fait, construisez-le et vous aurez un fichier dll (il se trouve facilement dans le dossier projects bin/debug.)

Vous pouvez ajouter cette dll à votre boîte à outils (clic droit ajouter ...) et elle y restera dans tous les projets!

2
MUG4N

Dans mon cas, je ne pouvais voir aucune des commandes du projet. Seulement quand un clic droit sur toolBox et en sélectionnant "Afficher tout" je les ai vus, mais ils ont été désactivés ...

Changer le type de projet d'une application Windows à ClassLibrary a résolu le problème.

2
ephraim

Question de base si vous utilisez des génériques dans votre contrôle de base . Si oui:

disons que nous avons le contrôle:

public class MyComboDropDown : ComboDropDownComon<MyType>
{
    public MyComboDropDown() { }
}

MyComboDropDown ne permettra pas d'ouvrir le concepteur sur celui-ci et ne sera pas affiché dans la Boîte à outils . Pourquoi? Parce que le contrôle de base n'est pas déjà compilé - lorsque MyComboDropDown est exécuté . Vous pouvez modifier ceci:

public class MyComboDropDown : MyComboDropDownBase
{
    public MyComboDropDown() { }
}

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Après la reconstruction et la réinitialisation de la boîte à outils, il devrait pouvoir voir MyComboDropDown dans le concepteur ainsi que dans la boîte à outils.

1
Andrzej

La recompilation a fait l'affaire pour moi!

0
Lex van Buiten

Le problème avec mon concepteur était un problème 32 vs 64 bits. Je pourrais ajouter le contrôle à la boîte à outils après avoir suivi les instructions de Impossible d'ajouter des contrôles d'assemblys 64 bits à la boîte à outils ou d'utiliser des concepteurs dans l'article Visual Studio IDE MS.

0
Smita