Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UTILISATION DU COMPOSANT PROPERTYGRID


Information sur le tutorial

Catégorie :Tutoriaux Tutorial .NET ( DotNet ) Date de création : 27/07/2006 23:25:53 Vu : 8 183 fois

Note :
Aucune note

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


Description

on peut voir ce composant dans visual studio par exemple pour lister les propriétés des contrôles

Tutorial

Utilisation du composant PropertyGrid ... c'est tellement simple

le propertyGrid est ce fameux composant que l'on peut voir dans visual studio pour lister les propriétés des contrôles par exemple ...

pour utiliser le Property Grid ,il faut

(dans mon exemple j'ai créer :

- 1 form nommée form1

- 1 propertyGrid nommé PropertyGrid1 sur form1

- 1 classe personne

)

>>

1 - glisser un composant propertyGrid depuis la boite à outils (Tous les windows forms) sur la form désirée

1.JPG

2 - définir une classe qui contiendra toutes les propriétés que le propertyGrid devra afficher

(pour cela on peut soit utiliser un diagramme de classes, soit ecrire sa classe directement)

Important : faire un import de  System.ComponentModel puis définir pour chaque accesseur CategoryAttribute ; en effet c'est la valeur affectée à CategoryAttribute qui créera ou non des catégories

code classe Personne.cs

using

System;

using

System.Collections.Generic;

using

System.Text;

using

System.ComponentModel;

namespace

PropertyGridExample

{

class personne

{

private string _nom;

private string _prenom;

private bool _celibataire;

private DateTime _date_naissance;

 

[

CategoryAttribute ( "Informations" ), DescriptionAttribute ( "Nom de la personne" )]

public string Nom

{

get { return _nom; }

set { _nom = value ; }

}

[

CategoryAttribute ( "Informations" ), DescriptionAttribute ( "Prenom de la personne" )]

public string Prenom

{

get { return _prenom; }

set { _prenom = value ; }

}

[

CategoryAttribute ( "Informations" ), DescriptionAttribute ( "Date de naissance de la personne" )]

public DateTime Date_naissance

{

get { return _date_naissance; }

set { _date_naissance = value ; }

}

[

CategoryAttribute ( "Situation" ), DescriptionAttribute ( "Situation  de la personne" )]

public bool Celibataire

{

get { return _celibataire; }

set { _celibataire = value ; }

}

}

}

3 - créer une instance de la classe,initialiser et affecter les valeurs désirées pour chaque champ de cet instance

dans mon exemple j'appelle la procedure initialiser_propertygrid1() dans l'évênement Form_load

private

void initialiser_propertygrid1()

{

personne opersonne;

opersonne=

new personne ();

opersonne.Nom=

"Romagny" ;

opersonne.Prenom =

"Jérôme" ;

opersonne.Celibataire =

true ;

opersonne.Date_naissance =

Convert .ToDateTime( "13/03/1976" );

propertyGrid1.SelectedObject = opersonne;

}

 

>> les champs de type bool  disposent d'une combobox pour changer la valeur dynamiquementdepuis le PropertyGrid

2.JPG

>> les champs de type  DateTime disposent d'un controle DateTimePicker pour changer la date dynamiquement depuis le PropertyGrid

3.JPG

4 - affecter à la propriété SelectedObject du propertyGrid l'instance de la classe (voir code ci-dessus procedure initialiser_propertygrid1())

propertyGrid1.SelectedObject = opersonne;

 

on peut alors basculer de la vue par "catégories" à la vue  "alphabetique" sans la moindre ligne de code

4.JPG

 

5.JPG

Voila avec cela vous avez deja de bonnes bases pour pouvoir utiliser le composant, sachant qu'en VB.NET c'est quasiment la même chose ;)

++

27 juillet 2006 23:28:06 :
.
signaler à un administrateur
Commentaire de tmcuh le 31/07/2006 09:12:59

Bonjour,
Bravo pour cette source qui montre un point non exploré, le coté object de chaque controle. Cependant il y a quelque chose qui me chiffone, sur chaque propriété, tu associe une description "DescriptionAttribute". Seulement comme l'on peut remarquer sur les screenshot, cette attribut ne change pas lorsqu'on change de propriété. Pourquoi?

Amicalement

signaler à un administrateur
Commentaire de romagny13 le 06/08/2006 13:22:22

si DescriptionAttribute permet d'afficher un cours descriptif ds panel du bas du propertygrid(comme ds visual studio lorsquon selectionne une propriete ds volet propriete on a un cours descriptif qui apparait)

si au niveau des screenshots c'est que j'avais fait un ccopir coller de mon code et javais mm po modifier CategoryAttribute (rooo le vilain lool), fo dire j'ai pondu la source au fur et a mesure que je saisissai le tuto

sinon on peut aussi utiliser
<CategoryAttribute("Informations"), _
        DescriptionAttribute("Nom de la personne"), _
        DisplayName("son tit nom :"), _
        DefaultValueAttribute("")> _

- CategoryAttribute : catégorie ds laquelle la propriete sera ranger (vue par "catégories")
- DescriptionAttribute : aide affichée ds panel bas properygrid
- DisplayName : texte affiché "a gauche" ds propertygrid

sinon pour recuperer un evenement ds le proertygrid on peut faire, apres on fait ce qu'on en veut (par exemple modifier dynamiquement la couleur d'un panel) :
Private Sub PropertyGrid1_PropertyValueChanged(ByVal s As Object, ByVal e As System.Windows.Forms.PropertyValueChangedEventArgs) Handles PropertyGrid1.PropertyValueChanged

        Try
            ' MessageBox.Show(e.ChangedItem.Label + " = " + e.ChangedItem.Value.ToString)

            MessageBox.Show(e.ChangedItem.PropertyDescriptor.Name.ToString + " = " + e.ChangedItem.Value.ToString)

        Catch ex As Exception
            MessageBox.Show("Impossible d'afficher la modification de la propriété : " & ex.Message)
        End Try

    End Sub

oila ++

signaler à un administrateur
Commentaire de DrChal le 07/01/2008 11:06:11

Salut,
Petite question, je souhaiterai mettre un Flags Enumeration comme propriété d'un composant.
Comment puis je faire?
Par exemple :
Mon enumeration serait :
[Flags]
public enum Position
{
Rien = 0,            
Haut = 1,
Bas = 2,
Gauche = 4,
Droite = 8,
Centre = 16,
Horizontale = 32,
Verticale = 64
}


J'ai essayé de faire ainsi
private Position _positionPointe = Position.Bas | Position.Gauche | Position.Verticale;

[Browsable(true),
        CategoryAttribute("Appearance"),
        Description("Position Pointe"),      
        System.ComponentModel.MergableProperty(true),
        System.ComponentModel.RefreshProperties(RefreshProperties.Repaint)
        ]
        public Position PositionPointe
        {
            get { return _positionPointe; }
            set { _positionPointe = value; }
        }

Dans ce cas, je ne peux pas sélectionner plusieurs positions. Comment puis je faire?
Car c'est le plus d'un Flags.
Merci d'avance

signaler à un administrateur
Commentaire de tmcuh le 07/01/2008 11:19:19

DrChal, passé par un enumerator donne un effet de combobox si mes souvenir sont correct. Tu dois passer par une class de type "list" pour pouvoir sélectionner plusieurs choix. Il existe des sources mais je ne sais plus où :)

signaler à un administrateur
Commentaire de Bidou le 08/01/2008 10:15:09 administrateur CS

Voir éventuellement du côté des Smart Tag

http://www.csharpfr.com/codes/NET-UTILISATION-SMARTTAGS_35320.aspx
http://www.c2i.fr/code.aspx?IDCode=639

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,016 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.