begin process at 2012 02 08 04:31:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > RAFRAICHISSEMENT PROPERTYGRID DU DESIGNER (ATTRIBUT REFRESHPROPERTIES)

RAFRAICHISSEMENT PROPERTYGRID DU DESIGNER (ATTRIBUT REFRESHPROPERTIES)


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Source .NET ( DotNet ) Classé sous :propertygrid, propriétés, design, rafraichir, rafraichissement Niveau :Débutant Date de création :25/06/2005 Date de mise à jour :21/11/2005 18:18:08 Vu / téléchargé :10 140 / 231

Auteur : coq

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
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

  • /*
  • 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
  • {
  • ...
  • }
/*
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/2 5/8677.aspx

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

21 novembre 2005 18:18:08 :
ajout des mots clés

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) COQTEXTTOOLS : TRANSFORMATIONS TEXTE SIMPLE ET UTILISATION A...
Source avec Zip Source .NET (Dotnet) XPATH : UTILISEZ DES REQUÊTES PARAMÉTRÉES
Source avec Zip Source .NET (Dotnet) PORTÉE DE LA VALEUR D'UN CHAMP STATIC
Source avec Zip Source .NET (Dotnet) PINVOKE DYNAMIQUE
Source avec Zip Source .NET (Dotnet) MANIPULATION DE LA CORBEILLE (SUPPRESSION, INFORMATIONS, VID...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) DIFFÉRENTIELLE ENTRE DEUX COLLECTION par morphey_83
Source avec Zip Source avec une capture Source .NET (Dotnet) RICHTEXTBOX POUR COLORATION SYNTAXIQUE EN TEMPS REEL par Renfield
Source avec Zip Source avec une capture Source .NET (Dotnet) TRANSFORMER UN PROGRAMME EN SERVICE par xavh44
Source avec Zip Source .NET (Dotnet) [C# ET T4] TEMPLATE DE VIEW MODEL POUR LE PATTERN MVVM par Kite37
Source .NET (Dotnet) EXEMPLE D'UTILISATION D'UN OCX SANS DECLARATION PREALABLE DA... par yohan49

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) OBJECT DYNAMIC PAR REFEXION ET DATAGRIDVIEW par yohan49
Source avec Zip Source avec une capture Source .NET (Dotnet) UITYPEEDITOR HACKING, PROPERTYGRID ET LISTVIEW CONFIGURABLES... par gourky
Source avec Zip Source avec une capture Source .NET (Dotnet) RECTANGLES par krissssss
Source avec Zip Source avec une capture Source .NET (Dotnet) SQL SERVER BROWSER par Samir63
Source avec Zip Source avec une capture Source .NET (Dotnet) MISE EN OEUVRE DE DESIGN PATTERN par Bidou

Commentaires et avis

Commentaire de bestouinouin le 03/12/2006 19:03:49

J'ai une petite question. Voila j'ai essayer de mettre ton code dans un de mes controles qui herite de "System.ComponentModel.Design.ComponentDesigner" qui me permet d'ajouter quelques petites options à mon controle, mais il ne rafraichi mes propriétés.Il faut que je clique sur la propriété pour qu'elle s'actualise, aurais tu une reponse à mon probleme ??? merci d'avance ;-)

Commentaire de coq le 03/12/2006 19:09:30 administrateur CS

Salut,

Cet attribut ne se met pas sur les propriétés du designer personnalisé utilisé pour le contrôle mais sur les propriétés du contrôle lui même.

Commentaire de bestouinouin le 03/12/2006 19:12:50

Aurais tu une solution a mon probleme ???

Commentaire de coq le 03/12/2006 19:52:30 administrateur CS

Pas sûr, vu que je ne suis déjà pas sur de l'avoir compris.
Qu'entend tu par "un de mes controles qui herite de "System.ComponentModel.Design.ComponentDesigner"" ?
A ma connaissance on associe un designer personnalisé à un contrôle, le contrôle ne devient pas lui même un designer personnalisé.
Surtout qu'en C# il n'y a pas d'héritage multiple, donc on ne peut à la fois être contrôle/composant (possédant System.ComponentModel.Component dans sa hiérarchie) et hériter dans le même temps de ComponentDesigner.

Commentaire de bestouinouin le 03/12/2006 20:07:41

Je suis désolé je m'explique très mal.En faite c'est un code que j'ai trouvé sur msdn voici le lien (http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemcomponentmodeldesigncomponentdesignerclasstopic.asp), et j'aimerai modifier une valeur de mon composant à la place des messagebox par exemple, et le faire apparaittre dans la grille. Je vais continuer à chercher... ;-)

Commentaire de coq le 03/12/2006 21:02:14 administrateur CS

Ah ok dit comme ça je vois ce que tu veux faire :-)
Tu dois te servir de la méthode RaiseComponentChanged (http://msdn2.microsoft.com/fr-fr/library/system.componentmodel.design.componentdesigner.raisecomponentchanged(VS.80).aspx)


Par exemple, dans le cadre de l'exemple cité ça donnerais ce genre de chose :
J'ai ajouter une propriété Time de type string à ExampleComponent et modifier la méthode onVerb du designer personnalisé :

// Event handling method for the example designer verb
private void onVerb(object sender, EventArgs e)
{
    string newValue = DateTime.Now.ToLongTimeString();
    ExampleComponent component = base.Component as ExampleComponent;
    if (component != null)
    {                
        // notification de changement
        MemberDescriptor timeDescriptor = TypeDescriptor.GetProperties(component)["Time"];
        this.RaiseComponentChanged(timeDescriptor, component.Time, newValue);
    }

    component.Time = newValue;
}

Commentaire de bestouinouin le 04/12/2006 08:57:34

Je m'incline devant ton savoir ;-). En quelques lignes tu m'as donné la solution et appris le "as ..." que je ne connaissais pas. C'est avec des gens comme toi que l'on avance. Merci encore.

Commentaire de coq le 04/12/2006 19:52:27 administrateur CS

lol
De rien, ce fut avec plaisir :-)

Commentaire de bestouinouin le 04/01/2007 11:32:48

Voici une source ou j'utilise un autre moyen pour modifier la propriété sous visual studio. voici le lien vers le projet.
http://www.csharpfr.com/codes/ANCRAGE-FENETRE_40970.aspx

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Rendre des propriétés d'un Propertygrid readonly dynamiquement [ par SyDaze ] Bonjour, Voila ma question: Je suis en train d'explorer le fonctionnement de la PropertyGrid afin de l'adapter à mes besoins. Comment rendre les Rafraichir un Datagrid [ par Astfanginnafengill ] Bonjour à tous,cela fait plusieurs jours que je cherche une réponse sur des forums sans résultat . Voila , je développe une application en C# et je su Comment assurer la persistence d'un uint initialisé en mode design? [ par Trentreznor ] Bonjour, je développe actuellement un composant en C# dont certaines des propriétés sont des uint (= System.UInt32 et je n'ai as de moy [.NET] [C#] PropertyGrid et choix d'un répertoire [ par Robloche ] Bonjour,J'utilise une PropertyGrid pour gérer les propriétés d'une classe et ça marche très bien pour les propriété rafraichir un histogramme [ par Classico ] Bonjour je souhaiterais rafraichir un histogramme, mais voilà lors du rafraichissement il me redessine un histogramme à coté et le meme. en fait ça m Propriétés d'un objet graphique dans une propertyGrid [ par tifdu86 ] Bonjour, Je suis actuellement sur un projet sous Visual Studio permettant de créer un diagramme d'activité graphiquement. Je dois manipuler une prop propriétés automatiques [ par moi411 ] Bonsoir à tous, Je viens de découvrir ce qu'on appelle les propriétés automatiques. J'ai bien compris le principe, l'utilité, les limites etc. Mais co Design en ado.net [ par abbeille ] Bonjour a vous tous !! est ce qu'il y a livre ou des vidéos qui pouuront m'aider sur le design d'une application , j'ai chercher un peu ce pack patt Créer un logiciel évolué , design et puissant en C# [ par LaTatadu91 ] Bonjour, je viens ici dans l'espoir d'avoir un conseil de personnes avisées et expertes en C#. Je m’apprête à développer une nouvelle applicati rafraichissement de données d'un datagridview [ par ismalife ] Bonjour à toute la communauté c# Je fais une fois de plus appel à vous, car j'ai toujours été aidé avec succès. Mon problème ici est que je souhaite


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,293 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales