5 Questions sur les propriétées des composants ... [C#] [Résolu]

Signaler
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007
-
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007
-
Voilà, je créé des controles (classe cs objet) que j'importe dans mes projets asp.net et je me pause pas mal de question sur les propriétés de ces controles :
- Comment définir une valeur par défaut ?
- Comment créer une propriété de type liste ? (l'utilisateur pourrai ajouter des éléments dans VS)
- Comment créer une propriété de type liste typé ? (typé d'un autre objet comme par exemple une table avec sa propriété item qui ont aussi leur propriété....)
- Comment créer une propriété de type liste préremplie ou l'utilisateur ne peut faire qu'un seul choix ?
- Et comment créer une propriété de type liste préremplie ou l'utilisateur pourrai selectionner plusieur items ?

Voilà voilà, je travail sous C# et je remerci par avance tout ceux qui pourrai me venir en aide sur ces quelques questions!!

PS : Je n'ai pas pas trouvé de meilleur rubrique pour pauser cette question même si celà concerne le c# et pas le VBScript

5 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Bonjour, pour créer une valeur par défaut dans une propriété il suffit de faire :

private _text as string = "valeur par défaut"
public property Text as string
get
return _text
end get
set (byval value as string)
_text = value
end set
end property

sinon pour l'histoire de type liste, je ne comprend pas bien. le problème est comment faire pour que dans le designer et dans le code aspx on puisse rajouter des valeurs ? si oui regarde un des articles de TKFE (http://blogs.Developpeur.org/tkfe/ (il y a qq mois déjà))

sinon pour déclarer une propriété de type liste il suffit de faire

private _list as new List(of MonObjet)
public property List as List(of MonObjet)
{get{}, set{}}

<hr />Cyril - MVS - MCP
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Je crois que tout se que je cherche est sur expliqué sur le site du lien que tu m'as passé
Merci beaucoup
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Je viens d'apprendre quelques trucs grace au lien de Jesus alors pour info en C# il suffit de mettre des attributs au dessus de la propriété pour définir l'interpretation dans VisualStudio
exemple :

private string _MaPropriété;
[Category("macatégorie"), DefaultValue("ma valeur"), Description("blabla bla")]
public string MaPropriété
{get{}set{}}

Voilà, ça déjà c'est simpa mais il y a bcp mieu, on peut créer une interface personnalisée pour l'aide à la saisie d'URL ou autre pour une propriété

Amusez vous bien!!

PS: dès que j'ai un exemple concret pour une interface d'ajout d'objet je vous le communique!
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Après quelques bidouillage et la lecture de posts sur code source c# j'ai réussi à créer une option de type objet personnalisé :
   1 -  Déclarez une propriété objet en utilisant l'attribut "[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]"
 
   2 - Ajouter l'attribut "[TypeConverter(typeof(ExpandableObjectConverter))]"
à la class objet et si tout se passe bien vous verez apparaitre la propriété objet avec un petit + et le contenu de ses propriétés dedant!

Plus intéressant, pour créer une propriété de type collection d'objet il faut utiliser le même procédé mais en typant la propriété "List<MONOBJET>"

Simpa simpa mais il reste encore beaucoup de questions sans réponse comme :
   - Comment créer une propriété de type dropdownlist
   - Comment créer une propriété de type checkboxlist
   - Comment attribuer une valeur par défaut aux listes (préremplire une collection d'objet ou de string suivant la propriété : j'ai trouvé une bidouille en créant une variable booléenne et en instantiant dans le get à la première lecture mais à mon avis il doit y avoir une solution avec le DefaultValue....)
   - Et comment imbriquer des propriétés objets dans une propriété objet

En espérant qu'une personne pourra m'aider à avancer plus vite bonne prog!!!
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Bon grace à l'aide de sebmafate j'ai créer mes propriété dropdownlist et checkboxlist en utilisant le namespace windows.form et la class EnumEditor
Les collections sont donc de type enum mais je vais me pencher sur une migration vers un type arraylist car la classe enum ne permet pas une génération dynamique d'une liste étant côdé directement...

Par ailleur je me suis apperçu de plusieur problème concernant les propriétés objets, mes informations sont très incompletes.
Pour avoir un rafraichissement instantané dans le designer il faut que chaque propriétés des objets est les attributs : [RefreshProperties(RefreshProperties.Repaint)]
mais il faut aussi mettre l'attribus : [NotifyParentProperty(true)]
Je n'ai pas la définition exacte mais à mon avis c'est pour que l'on puisse retrouver la valeur de la propriété de l'objet dans le noeud qui va être créé
D'ailleur il faut spécifier egalement au niveau de la propriété public que c'est un objet complexe et que sa définition va se trouver dans une balise interne (PersistenceMode) et le type d'objet (TemplateContainer):
[PersistenceMode(PersistenceMode.InnerProperty)]
[TemplateContainer(typeof(monObjet))]
Dernière chose primordiale, le constructeur de l'objet doit être public et non internal

Voilà avec ces dernières infos le code est véritablement fonctionnel
Il reste encore quelques petit trucs à trouver comme l'imbrication de composants expensible dans l'interface ou encore comment changer le tostring en face de la propriété expensible et y mettre autre chose que le chemin de l'objet...
Si jamais vous trouvez faites moi signe!

Autrement si une personne à une méthode pour interfacer les composants entre eux (comme la propriété groupe des radio) je serai très intéressé car je cherche maintenant à réaliser une propriété dropdownlist qui detecte les objets du même type...

PS: merci à jesusonline et sebmafate pour leur aide