Rafraichissement propertygrid du designer (attribut refreshproperties)

Description

Pour ceux qui ne connaissent pas, voici comment faire pour déclencher le rafraichissement de la grille de propriété du Designer sur le changement de valeur d'une des propriétés.

Ceci est particulièrement utile quand le fait de changer la valeur d'une propriété affichée dans la fameuse grille pour notre composant déclenche le changement de valeur d'une autre propriété du composant, elle aussi affichée dans la grille.

Pour ceux qui ne verrais pas très bien ce dont je veux parler, prenez le zip, ouvrez le Form1 dans le designer et faites le test en changeant "TextBoxType" sur les 2 "TextBox" :-)

Source / Exemple :


/*
Petit exemple : 
Prenons un contrôle TextBox personnalisé, possédant une propriété TextBoxType permettant de choisir un type d'entrée.

Si on fait ceci, on observera que la mise à jour de l'affichage de cette dernière dans la grille ne sera pas effectuée en "temps réel" : 

  • /
[Browsable(true), Category("Appearance")] public TextBoxTypes TextBoxType { get { return _type; } set { _type = value; // changement du texte du TextBox switch ( _type ) { case TextBoxTypes.Number: this.Text = "Veuillez saisir un nombre."; break; case TextBoxTypes.Text: this.Text = "Veuillez saisir un texte."; break; } } } /* Le changement de valeur met à jour la propriété Text. Le rendu du contrôle sur la surface de design est bien effectué, cependant vous observerez que dans la grille le contenu de "Text" n'est pas actualisé. (si vous cliquez dans la zone de saise il le sera).
  • /
/* La "parade" consiste donc à utiliser l'attribut RefreshProperties qui pemettra de déclencher la mise à jour de la grille à chaque changement de valeur de la propriété TextBoxType :
  • /
[Browsable(true), Category("Appearance"), RefreshProperties(RefreshProperties.Repaint)] public TextBoxTypes TextBoxType { ... }

Conclusion :


Pour une version plus "graphique" : http://blogs.developpeur.org/coq/archive/2005/06/25/8677.aspx

Codes Sources

A voir également

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.