begin process at 2010 02 10 11:07:45
  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é :8 548 / 219

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 une capture Source .NET (Dotnet) AJOUTER DES BYTES À UN EXECUTABLE par t0fx
Source .NET (Dotnet) COPIER/ COLLER DATAGRID (COPY/PASTE) par jamesbidon
Source avec Zip Source .NET (Dotnet) MECANISME DE SYNCHRONISATION DE THREAD - MONITOR, MUTEX, SEM... par jesusonline
Source .NET (Dotnet) EVENTHANDLERS GÉNÉRIQUES par ricklekebekoi
Source avec Zip Source .NET (Dotnet) TRAITER UN FOREACH EN PARALLÈLE par maitredede

 Sources en rapport avec celle ci

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
Source avec Zip Source avec une capture Source .NET (Dotnet) COMPOSANT HORLOGE ANALOGIQUE PERSONNALISABLE par taupe4

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 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 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 [.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é Développer un contrôle ou composant avec des propriétés complexes [ par Trentreznor ] Bonjour, je cherche actuellement à développer des composants en C# et j'aurais besoin d'utiliser des propriétés "avancées" po MonoDevelop [ par MHI ] Bonjour,Peut-on avec MonoDevelop gérer avec la souris le visuel d'un source (clacage de composant, modif des propriétés du composant pa Urgent : Propriétés par défaut [ par Selig ] Bonjour,J'ai crée mon propre composant DatagridView auquel j'ai assigné des propriétés par défaut dans son constructeur. Le problème vient du fait que Sérialisation d'une form (au moment du design) [ par veler ] Salut,J'ai crée un concepteur de fenêtre en C# et en VB.Net (le moteur est en C#, et puis le reste en VB), j'aimerais pouvoir obtenir une class (un bo Fenêtres qui s'ouvrent quand on ouvre le [Design] d'une Form [ par Nikachu ] Bonjour à tous,Je sollicite votre aide sur le point suivant : je suis chargée de concevoir une application d'édition de .doc pour mon entreprise, et l lire de propriétés des composants d'une winform [ par houdaprog ] Salut ;comment peut on lire des propriétés des composants d'une winform et les écrire dans un fichier XML.merci.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,577 sec (3)

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