Exemple de propriété d'objet avec un petit plus dans la fenetre propriete (style ce que l'on trouve devant la propriete font

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 179 fois - Téléchargée 32 fois

Contenu du snippet

Voila je cherchais un moyen d'afficher une propriete qui regroupe plusieurs valeurs, par exemple dans un Textbox vous avez une propriete font qui regroupe la taille de la font, le nom etc....

voici un code qui permet de faire ca avec ces propres objets...

Source / Exemple :


//VOICI LA CLASSE QUI DOIT DEFINIR MES PROPRIETES DEVANT APPARAITRE DANS LA FENETRE PROPRIETE AVEC LE PETIT PLUS...
[TypeConverter(typeof(ExpandableObjectConverter))]
	public class Mon_ensemble_de_propriete
	{
		private string _Nom;
		private string _Prenom;

		public Mon_ensemble_de_propriete()
		{
		}

		public string Nom
		{
			get
			{
				return _Nom;

			}
			set
			{
				_Nom=value;
			}
		}
		public string Prenom
		{
			get
			{
				return _Prenom;

			}
			set
			{
				_Prenom=value;
			}
		}
	}

//AU FINAL DANS MON OBJET J'AURAI UNE PROPRIETE DEFINIT COMME CA :

private Mon_ensemble_de_propriete Arthenius =new Mon_ensemble_de_propriete();
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
		public Mon_ensemble_de_propriete Mais_qui_est_Arthenius
		{
			get
			{
				
				return Arthenius;
			}
			set
			{
				Arthenius=value;
			}
		}

Conclusion :


Voila...maintenant vous aussi vous pourrez faire des propriétés "groupés" ca evitera a tout le monde de scroller pendant trois heures la fenetre des propriétés des objets...

Merci a Richard Clark : " Au coeur de visual Basic .net" (http://www.c2i.fr/press/coeurvbnet.aspx)
qui as mis a disposition ces sources en VB que j'ai traduis en C#
merci a coq, crazyht, jesusonline pour leur aide...

Si vous avez des Interrogations des appréciations n'hesitez pas...POSTER :o)))
@+

A voir également

Ajouter un commentaire

Commentaires

cs_Kelpan
Messages postés
70
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
17 septembre 2006

J'ai résolu mon souci.
En fait, j'ai trouvé une astuce avec la méthode Clone (Implementation de ICloneable) qui est appelé au moment du design.
Plus de précision sur le source converti en VB (car je suis VBiste) par JESUSONLINE :
http://www.vbfrance.com/code.aspx?ID=25937
Arthenius
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
@Kelpan : non je ne vois malheureusement pas ou se situe ton souci :/
cs_Kelpan
Messages postés
70
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
17 septembre 2006

Pour répondre à Mahrak

Il existe des méthodes pour définir la serialisation des propriétés objets que j'utilise souvent

Tu as les méthodes (Property étant le nom de ta propriété) :
bool ShouldSerialize(Property) : Renvoi True si il faut serialiser
void Reset(Property) : reinitialiser la proppriété

Tu peux consulter MSDN : PropertyDescriptor, tu y trouvera les infos
cs_Kelpan
Messages postés
70
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
17 septembre 2006

Bonjour,
Je suis tombé sur ce source, et j'aurais bien voulu le trouvé avant car cela fait une semaine que je galère à faire ce genre de propriété.
Finalement, j'en suis arrivé au même point...

Par contre, moi j'ai un souci.
J'ai un control personnalisé qui hérite de Button.
Sur mon écran lorsque que je modifie la propriété de mon Button personnalisé je n'ai pas de problème, la serialisation s'effectue correctement.
Par contre, et c'est ici que j'ai le problème, c'est que lorsque j'herite de mon écran, la propriété que j'ai modifié et affiché en gras (ce qui n'est pas le comportement standard par rapport au comportement habituel du propertyGrid) et je ne peux pas serialiser la propriété si la valeur revient à celle par défaut.

Quelqu'un à le meme problème ou jai oublié quelque chose ?
TigerFab
Messages postés
115
Date d'inscription
samedi 15 février 2003
Statut
Membre
Dernière intervention
18 mai 2008

Voilà j'ai finalement trouvé un moyen pour rafraichir directement ses composants dès qu'on change une propriété dans le designer.

Il faut ajouter à la classe un évènement que vous appelerez dans chaque propriété.

Exemple :

- Définissez dans la classe Mon_ensemble_de_propriete() :
public Event Set_Mon_ensemble_de_propriete()

- Pour chaque propriété (nom, prénom, ..) de la classe, faites
RaiseEvent Set_Mon_ensemble_de_propriete()
dans chaque Set

- Et voilà, plus qu'à définir votre procédure événementielle dans votre objet :
public sub SetArthenius() Handles Arthenius.Set_Mon_ensemble_de_propriete()

Chaque changement de propriété appelera votre fonction personalisée SetArthenius.
Afficher les 35 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.