Comment définir une icone à un composant windows nouvellement créé ?

[Résolu]
Signaler
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
-
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
-
Bonjour à tous !

Quelqu'un saurait il comment attribuer une icone à un composant windows ?
Je travail avec .NET 2005 et j'ai créé une bibliothèque de composant windows.
Mon composant et créé mais lorsque je référence ma dll dans un autre projet, le composant apparait avec l'icone par défaut (un rouage violet).

Je vous remercie d'avance pour votre aide.

8 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Je vais le refaire et te donner les etapes une par une.
- Je crée un projet de type "Class Library"
- Il me crée une classe "Class1", je la renomme "TestControl"
- Je renomme aussi l'espace de nom "MyControl"
- J'ajoute a mon projet les references System.Windows.Forms, et System.Drawing.
- Je déclare dans ma classe les espaces de nom System.Windows.Forms et System.Drawing
- Je fais hériter Test1 de Control
- J'ajoute a mon projet le bmp qui me servira d'icone (que j'ai nommé avec originalité : icon.bmp"
- Je vais dans les propriétés de cet icone, et dans "Build Action", je met "Embedded resource"
- Dans mon code je me place juste au dessus de la déclaration de ma classe, et je tape :
[
ToolboxBitmap(
typeof(MyControl.
TestControl),
"icon.bmp")]


-Je compile mon projet et je le ferme
- J'ouvre un nouveau projet, de type Windows Forms
- En mode design, dans la toolbar, je fais clic-droit -> "Choose items..."
- Dans la fenetre qui apparait, je clic sur le bouton "Browse", et je navigue jusqu'au chemin de mon Control
- Une fois seletionné, il apparait dans ma toolbar, et avec l'icone

Voila
Comme code dans mon Control, je n'ai que ca :

<HR>
using System;

using System.Drawing;

using System.Windows.Forms;

namespace MyControl
{
[
ToolboxBitmap(
typeof(MyControl.
TestControl),
"icon.bmp")]

public
class
TestControl :
Control
{
}
}


<HR>

Pourquoi est-ce que tu ne peux pas lui indiquer le nom complet ?
Si jamais tu n'est pas sur que ton icone ait été embarquée, tu peux verifier avec l'outil ILDASM (dans le manifest)



Mx
MVP C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Bonjour,
Jette un coup d'oeil a l'attribut ToolBoxBitmap


Mx
MVP C#
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
1
Merci pour le renseignement.



J'ai effectivement trouvé le moyen de définir mon icone mais je dois lui passer l'URL de mon fichier .bmp.

Je voudrais pouvoir le compiler dans ma dll.

J'ai essayer plein de truc mais ca ne marche pas.

Est ce que c'est possible ?



Merci pour vos réponse.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
En utilisant ce constructeur, tu pourras designer ton Assembly, dans lequel tu auras prealablement intégré ton image en tant que ressource

Mx
MVP C#
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
1
Merci pour l'info mais ca ne marche toujours pas.

J'ai intégré mon image en tant que ressource, elle s'appelle DropDownButton.bmp.
Ma classe s'appelle DropDownButton et mon namespace s'appelle Composants.


[
ToolboxBitmap(
typeof(
DropDownButton),
"DropDownButton.bmp")]

J'ai placé ca juste avant le début de ma classe.

Je désespère !!

Merci pour votre aide.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Salut,

Ca a marché chez moi, mais je t'accorde que c'est pas toujours facile.
En fait, j'ai du creer un projet dans une autre solution que celle dans laquelle le controle se trouvait, et l'ajouter manuellement a la ToolBox pour que cela fonctionne. Essaie de voir ce que ca donne pour toi.

Au fait, dans typeof, n'hesite pas a mettre le nom complet (namespace.nomducontrole)




Mx
MVP C#
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
1
Re MorpionMx,

J'ai créé un projet windows application ou j'ai été chercher mon composant par la toolbox mais l'icon par défaut est toujours la.

Pourtant dans ma librairie de composant je met bien mon icon en ressource qui est en faite un fichier .bmp, mais rien n'y fait.
Pour le nom complet c'est pas possible, je ne peux pas lui indiquer.
Pourrrais tu me faire voir le début de ta classe ou les informations qui m'interesse apparaissent ?

J'te remercie beaucoup pour ton aide.
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
1
Merci ca marche.

La seule différence c'est que moi j'avais créé une bibliotheque de composant et non une bibliothèque de classe.
C'est pour ca aussi que je ne pouvais pas indiquer le nom complet de ma classe en plus de ne pas voir mon icon.

Merci encore MorpionMx