IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Modifier une list dans la Propertyview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut Modifier une list dans la Propertyview
    Bonjour,

    J'ai un objet avec une property de type List<string>.

    Dans une propertyView, je souhaite pouvoir modifier la liste.
    Mais quand j'essaye, j'ai le message suivant: "Le constructeur sur le type 'System.String' est introuvable."

    J'ai essayé de voir sur Google mais j'ai pas de réponse claire pour résoudre mon soucis.

    Pourriez vous m'aider ?
    Merci d'avance.
    F.

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Par défaut
    Un exemple de code svp ? Parce qu'au vu du message d'erreur, c'est pas un problème de PropertyView je pense, mais plus d'une mauvaise utilisation !

  3. #3
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Merci de ta réponse !

    Donc, j'ai une classe Tag:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
        public class Tag
        {
            public Tag()
            {
            }
     
            public Tag(string s)
            {
                tagname = s;
            }
     
            string tagname;
     
            public string tag
            {
                get
                {
                    return tagname;
                }
                set
                {
                    tagname = value;
                }
            }
        }
    avec Dans une classe, l'object suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    List<Tags> listTags;
     
            public Tag[] Tags
            {
                get
                {
                    return tags.ToArray();
                }
            }
    Merci.

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Par défaut
    Je pensais plus au code d'utilisation de la liste dans ton PropertyView plus que la définition de ta liste !

  5. #5
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Comment cela ? Quel code ?

    La liste est dans une classe X

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    X instance1;
     
    .....
     
    propertyGrid.SelectedObject = instance1;

  6. #6
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Un PropertyGrid requiert des Props Publiques avec Accesseurs:
    - Get et -Set-
    - ton class X est mal fichu ...car sa prop Tags (array de strings) ne sera jamais sette par le PropertyGrid
    - meme si tu deferes à un Inner List<T> ou List<T> interne il faut un setter public..et le code de MAJ de l'Inner List...

    Code revu avec le Class Tag dote d'un event PropertyChanged(notification de changement de prop):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
     
    using System;
    using System.ComponentModel;
     
    namespace WinPropertyGridString
    {
     
        public class Tag 
        {
           public event EventHandler  PropertyChanged;
     
            public Tag()
            {
            }
     
            public Tag(string s,double p)
            {
                tagname = s;
                price = p;
            }
     
            string tagname;
     
            public string TagName
            {
                get
                {
                    return tagname;
                }
                set
                {
                    tagname = value; OnPropertyChanged();
                }
            }
            double  price;
     
            public double Price
            {
                get
                {
                    return price;
                }
                set
                {
                    price = value; OnPropertyChanged();
                }
            }
            private void OnPropertyChanged()
            {
               EventHandler  h = PropertyChanged;
               if (h != null)
                   h(this, EventArgs.Empty);
     
            }
        }
    }
    code revu class X:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    using System;
    using System.Collections.Generic;
     
    namespace WinPropertyGridString
    {
     
        public class X 
        {
            private List<Tag> tags = new List<Tag>();
            public Tag[] Tags
            {
                get { return tags.ToArray(); }
                set
                {
                    if (value != null)
                    {
                        tags.Clear();
                        tags.AddRange(value);
                    };
     
                }
            }
            public X()
            {
     
                this.tags.AddRange(
                  new Tag[]{ 
                       new Tag("item1",rndPrice ), new Tag("item2",rndPrice ), new Tag("item3",rndPrice )}
                  );
            }
            private Random rnd = new Random();
            private double rndPrice
            {
                get { return rnd.Next(100, 500); }
     
            }
        }
    }
    code form user avec un BindinSuurce pour "voir" les changts de prop en "live":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
     
    namespace WinPropertyGridString
    {
        public partial class FormX : Form
        {
            X testX = null;
            public FormX()
            {
                InitializeComponent();
     
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                testX = new X();
                this.bindingSource1.DataSource = testX;
                this.bindingSource1.DataMember = "Tags";
                this.propertyGrid1.SelectedObject = testX;
                listBox1.DataSource = this.bindingSource1;
                listBox1.DisplayMember = "TagName";
     
                //CODE ALTERNATIF SANS BINDINGSOURCE
                listBox1.DataSource = testX.Tags ;
                listBox1.DisplayMember = "TagName";
            }
     
            private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
            {
                MessageBox.Show("value ");
                this.bindingSource1.ResetBindings(true);
     
                //CODE ALTERNATIF SANS BINDINGSOURCE
                listBox1.DataSource = testX.Tags;
                listBox1.DisplayMember = "TagName";
     
            }
     
     
     
     
        }
    }
    bon code......

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2010, 17h54
  2. modifier une liste contenue dans une liste
    Par harris_macken dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 18/03/2008, 16h52
  3. comment modifier une liste dans un dictionnaire?
    Par Mydriaze dans le forum Général Python
    Réponses: 1
    Dernier message: 06/08/2007, 19h57
  4. Comment faire pour modifier une ligne dans une DBGrid?
    Par Nico62 dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2005, 12h24
  5. Réponses: 5
    Dernier message: 03/02/2004, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo