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 :

Passer Form1 en référence constructeur


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Passer Form1 en référence constructeur
    Bonjour,

    Je suis en train de réaliser un programme qui permet de gérer le chauffage dans une maison virtuel. J'ai donc créé de manière graphique ma maison (dans la Form principal). Et a coté de sa, j'ai créé un ensemble de classes (maison, pièces, parois, ouvertures, ..).

    Ma question est la suivante: j'ai, par exemple, un attribut "lampeExtérieur" dans mon objet maison, c'est un booléen permettant d'indiquer si la lampe de dehors est allumée ou éteinte. Mais lorsque je ferai: maMaison.lampeExtérieur = true; il faudrait que je puisse changer le text d'un label contenu dans me form... Et je veux bien évidemment écrire ce code dans le "set" de ma classe (comme ça je ne dois pas le retaper a chaque fois). Alors je sais que je peux passer en référence au constructeur le label que je désire modifié, mais l'objet maMaison doit avoir accès a plein d'objet de ma form, je ne vais donc pas tous les passé au paramètre.

    Il faudrait que je puisse passer "toute ma Form1", pour pouvoir modifier tout les objets graphique qui la compose..

    Voila, j'espère m’être fait comprendre Si vous avez une idée, je vous en remercid d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 75
    Points
    75
    Par défaut
    le plus simple peut etre serait de passer par un enum car j'imagine que tu as plein de lampe...
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public enum EtatLampe
    {
          Eteint = 0,
          Allume = 1
    }
    L'avantage c'est que 0 / 1 c'est convertible en booléen si veut faire d'autre traitment dessus et l'autre avantage, c'est que tu peux convertir la valeur de ton enum pour ton label
    De plus, ton code est bcp plus lisible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // en terme de lisibilité, je prefere ca : 
    maMaison.lampeExtérieur = EtatLampe.Allume
    //que ca :
    maMaison.lampeExtérieur = true
    Pensez à utiliser les boutons et

  3. #3
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Salut,

    moi je créerais un nouvel évènement LampeExterieureStateChanged que je déclencherais dans le set. Tu peux ensuite abonner une méthode de ton Form à cet évènement..
    J’ai des questions à toutes vos réponses!

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour tatchi

    Et à quoi sert l'infrastructure Binding des controls winforms et du Net Framework?
    Tu vas faire du "reinvent the wheel" ....
    Bref pour les labels (ou control souhaite) tu peux lier ses props :Text, BackColor ,ForeColor etc....a chaque changement d'etat d'une prop de ton class Maison ou de l'un de ses elements(Class Portail,Salon ,PorteGarage etc....)
    Pour cela tu dois peaufiner tes class comme il faut :
    1/ MembreMaison
    -class Ancetre des elements du class Maison...
    -implemente INotifyPropertyChanged pour besoin du binding (aller -retour)...
    -prop:EstAllume =>etat actuel du membre: arme ou desarme
    -prop:EtatCouleur =>couleur qui suit l'etat actuel du membre
    -2 props:NormalCouleur, AlarmeCouleur=>permettent de customiser eventuellement les couleurs Normalmembre, AlarmeCouleur
    -prop IDType:type enum permet d'identifier le type du membre

    2/ les rejetons de MembreMaison (excuse du terme) :
    - Salon,Portail,fenetreA & fenetreB.... avec zero code....

    3/Class Maison:
    - props:Salon, Portail Portail,FenetreA, FenetreB quI se contente de les iniatiliser...
    Maintenant si les voleurs sont des gangsters de haute voltige qui veulent "demenager" la maison... il faudra un class Bazooka".....

    Bref il suffit ensuite dans ton form:
    - init. une instance de Maison....
    - dans Load_Form :faire Label.DataBindings.Add(new binding()) pour les props des labels à lier aux prop homologues de Maison.Membre et tu as la liaison
    two-way...

    code .cs du class Maison(projet dll projet librairie LibMaison) à compiler et à referencer dans le fichier app de ton form (le code est donne à part):

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel;
    using System.Windows.Forms;
    using LibMaison;
    using System.Drawing;
    namespace LibMaison
    {
       public enum ElementType
       {
          Salon,
          Portail,
          FenetreA,
          FenetreB
     
       }
        //Ancetre des Membres de Maison
        public  class MembreMaison : INotifyPropertyChanged
        {
            private ElementType idType;
            public ElementType IDType 
            {
                get { return idType; }
                set
                {
                    idType = value;
                    OnPropertyChanged("IDType");
                }
            }
            // permet de customiser la couleur normal  
            private Color normalcouleur = Color.LimeGreen;
            public Color NormalCouleur
            {
                get { return normalcouleur; }
                set
                {
                    normalcouleur = value;
                    OnPropertyChanged("NormalCouleur");
                }
            }
            // permet de customiser  couleur d'alarme  
            private Color alarmcouleur = Color.Red;
            public Color AlarmeCouleur
            {
                get { return alarmcouleur; }
                set
                {
                    alarmcouleur = value;
                    OnPropertyChanged("AlarmeCouleur");
                }
            }
            // couleur qui suit l'etat actuel du membre 
            private Color etatCouleur;
            public Color EtatCouleur
            {
                get { return etatCouleur; }
                set
                {
                    etatCouleur = value;
                    OnPropertyChanged("EtatCouleur");
                }
            }
            // etat actuel du membre: arme ou desarme 
            private bool estAllume;
            public bool EstAllume
            {
                get { return estAllume; }
                set
                {
                    estAllume = value;
                    if (estAllume)
                    {
                        EtatCouleur = AlarmeCouleur;
                    }
                    else
                    {
                        EtatCouleur = NormalCouleur;
                    }
                    OnPropertyChanged("EstAllume");
                }
            }
     
            public event PropertyChangedEventHandler PropertyChanged;
            protected internal void OnPropertyChanged(string nameProp)
            {
                PropertyChangedEventHandler handler = PropertyChanged;
                if (handler !=null )
                PropertyChanged(this, new PropertyChangedEventArgs(nameProp));
            }
        }
        public class  Salon:MembreMaison  
        {
     
            public Salon(ElementType pidType)
            {
                IDType = pidType;
                EstAllume = false;
     
            }
     
        }
        public class Portail : MembreMaison 
        {
     
            public Portail(ElementType pID)
            {
                IDType = pID;
                EstAllume = false;
     
            }
     
        }
        public class FenetreA : MembreMaison
        {
     
            public FenetreA(ElementType pID)
            {
                IDType = pID;
                EstAllume = false;
     
            }
     
        }
        public class FenetreB : MembreMaison
        {
     
            public FenetreB(ElementType pID)
            {
                IDType = pID;
                EstAllume = false;
     
            }
     
        }
        public class Maison
        {
            public Maison()
            {
                Salon = new Salon(ElementType.Salon);
                Portail = new Portail(ElementType.Portail );
                FenetreA = new FenetreA(ElementType.FenetreA);
                FenetreB = new FenetreB(ElementType.FenetreB);
            }
            public Salon Salon { get; set; }
            public Portail Portail { get; set; }
            public FenetreA FenetreA { get; set; }
            public FenetreB FenetreB { get; set; }
        }
     
     
    }
    code du winform (proj app WinFormNotify) utilisateur:

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    //ajout reference
    using LibMaison;
     
    namespace WinFormNotify
    {
        public partial class Form2 : Form
        {
            public Maison sweetHome = new Maison();
            public Form2()
            {
                InitializeComponent();
     
     
            }
            private void Form2_Load(object sender, EventArgs e)
            {
                sweetHome = new Maison();
     
     
     
                // 1-Portail
                // Alarm color Portail =>Coral
                sweetHome.Portail.AlarmeCouleur = Color.Coral;
                this.lblPortail.ForeColor = Color.White; 
                this.lblPortail.DataBindings.Add(new Binding("BackColor",sweetHome.Portail,"ColorState",true,DataSourceUpdateMode.OnPropertyChanged));
                this.lblPortail.DataBindings.Add(new Binding("Text", sweetHome.Portail, "IDType", true, DataSourceUpdateMode.OnPropertyChanged));
     
                // 2-Salon
                // Alarm color Salon =>LightBlue 
                sweetHome.Salon.AlarmeCouleur = Color.DarkBlue;
                this.lblSalon.ForeColor = Color.White;
                this.lblSalon.DataBindings.Add(new Binding("BackColor", sweetHome.Salon , "ColorState", true, DataSourceUpdateMode.OnPropertyChanged));
                this.lblSalon.DataBindings.Add(new Binding("Text", sweetHome.Salon, "IDType", true, DataSourceUpdateMode.OnPropertyChanged));
     
                // 3-FenA
                this.lblFenA.ForeColor = Color.White;
                this.lblFenA.DataBindings.Add(new Binding("BackColor", sweetHome.FenetreA, "ColorState", true, DataSourceUpdateMode.OnPropertyChanged));
                this.lblFenA.DataBindings.Add(new Binding("Text", sweetHome.FenetreA, "IDType", true, DataSourceUpdateMode.OnPropertyChanged));
     
                // 4-FenA
                this.lblFenB.ForeColor = Color.White;
                this.lblFenB.DataBindings.Add(new Binding("BackColor", sweetHome.FenetreB, "ColorState", true, DataSourceUpdateMode.OnPropertyChanged));
                this.lblFenB.DataBindings.Add(new Binding("Text", sweetHome.FenetreB, "IDType", true, DataSourceUpdateMode.OnPropertyChanged));
            }
     
     
     
            private void btnPortailAlarm_Click(object sender, EventArgs e)
            {
                if (sweetHome != null)
                {
                    sweetHome.Portail.EstAllume = !sweetHome.Portail.EstAllume;
                    //desarme Salon
                    sweetHome.Salon.EstAllume = ! sweetHome.Salon.EstAllume;
                }
            }
     
            private void btnSalonAlarm_Click(object sender, EventArgs e)
            {
                if (sweetHome != null)
                {
                    sweetHome.Salon.EstAllume = ! sweetHome.Salon.EstAllume;
                    sweetHome.Portail.EstAllume = ! sweetHome.Portail.EstAllume ;
                }
            }
     
            private void btnAlarmFenetres_Click(object sender, EventArgs e)
            {
                if (sweetHome != null)
                {
                    sweetHome.FenetreA.EstAllume = !sweetHome.FenetreA.EstAllume;
                    sweetHome.FenetreB.EstAllume = !sweetHome.FenetreB.EstAllume;
                }
     
            }
     
     
     
     
        }
     
    }
    bon code...

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    bonjour tatchi

    Et à quoi sert l'infrastructure Binding des controls winforms et du Net Framework?
    Tu vas faire du "reinvent the wheel" ....
    Bref pour les labels (ou control souhaite) tu peux lier ses props :Text, BackColor ,ForeColor etc....a chaque changement d'etat d'une prop de ton class Maison ou de l'un de ses elements(Class Portail,Salon ,PorteGarage etc....)
    Pour cela tu dois peaufiner tes class comme il faut :
    1/ MembreMaison
    -class Ancetre des elements du class Maison...
    -implemente INotifyPropertyChanged pour besoin du binding (aller -retour)...
    -prop:EstAllume =>etat actuel du membre: arme ou desarme
    -prop:EtatCouleur =>couleur qui suit l'etat actuel du membre
    -2 props:NormalCouleur, AlarmeCouleur=>permettent de customiser eventuellement les couleurs Normalmembre, AlarmeCouleur
    -prop IDType:type enum permet d'identifier le type du membre

    2/ les rejetons de MembreMaison (excuse du terme) :
    - Salon,Portail,fenetreA & fenetreB.... avec zero code....

    3/Class Maison:
    - props:Salon, Portail Portail,FenetreA, FenetreB quI se contente de les iniatiliser...
    Maintenant si les voleurs sont des gangsters de haute voltige qui veulent "demenager" la maison... il faudra un class Bazooka".....

    Bref il suffit ensuite dans ton form:
    - init. une instance de Maison....
    - dans Load_Form :faire Label.DataBindings.Add(new binding()) pour les props des labels à lier aux prop homologues de Maison.Membre et tu as la liaison
    two-way...

    code .cs du class Maison(projet dll projet librairie LibMaison) à compiler et à referencer dans le fichier app de ton form (le code est donne à part):

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel;
    using System.Windows.Forms;
    using LibMaison;
    using System.Drawing;
    namespace LibMaison
    {
       public enum ElementType
       {
          Salon,
          Portail,
          FenetreA,
          FenetreB
     
       }
        //Ancetre des Membres de Maison
        public  class MembreMaison : INotifyPropertyChanged
        {
            private ElementType idType;
            public ElementType IDType 
            {
                get { return idType; }
                set
                {
                    idType = value;
                    OnPropertyChanged("IDType");
                }
            }
            // permet de customiser la couleur normal  
            private Color normalcouleur = Color.LimeGreen;
            public Color NormalCouleur
            {
                get { return normalcouleur; }
                set
                {
                    normalcouleur = value;
                    OnPropertyChanged("NormalCouleur");
                }
            }
            // permet de customiser  couleur d'alarme  
            private Color alarmcouleur = Color.Red;
            public Color AlarmeCouleur
            {
                get { return alarmcouleur; }
                set
                {
                    alarmcouleur = value;
                    OnPropertyChanged("AlarmeCouleur");
                }
            }
            // couleur qui suit l'etat actuel du membre 
            private Color etatCouleur;
            public Color EtatCouleur
            {
                get { return etatCouleur; }
                set
                {
                    etatCouleur = value;
                    OnPropertyChanged("EtatCouleur");
                }
            }
            // etat actuel du membre: arme ou desarme 
            private bool estAllume;
            public bool EstAllume
            {
                get { return estAllume; }
                set
                {
                    estAllume = value;
                    if (estAllume)
                    {
                        EtatCouleur = AlarmeCouleur;
                    }
                    else
                    {
                        EtatCouleur = NormalCouleur;
                    }
                    OnPropertyChanged("EstAllume");
                }
            }
     
            public event PropertyChangedEventHandler PropertyChanged;
            protected internal void OnPropertyChanged(string nameProp)
            {
                PropertyChangedEventHandler handler = PropertyChanged;
                if (handler !=null )
                PropertyChanged(this, new PropertyChangedEventArgs(nameProp));
            }
        }
        public class  Salon:MembreMaison  
        {
     
            public Salon(ElementType pidType)
            {
                IDType = pidType;
                EstAllume = false;
     
            }
     
        }
        public class Portail : MembreMaison 
        {
     
            public Portail(ElementType pID)
            {
                IDType = pID;
                EstAllume = false;
     
            }
     
        }
        public class FenetreA : MembreMaison
        {
     
            public FenetreA(ElementType pID)
            {
                IDType = pID;
                EstAllume = false;
     
            }
     
        }
        public class FenetreB : MembreMaison
        {
     
            public FenetreB(ElementType pID)
            {
                IDType = pID;
                EstAllume = false;
     
            }
     
        }
        public class Maison
        {
            public Maison()
            {
                Salon = new Salon(ElementType.Salon);
                Portail = new Portail(ElementType.Portail );
                FenetreA = new FenetreA(ElementType.FenetreA);
                FenetreB = new FenetreB(ElementType.FenetreB);
            }
            public Salon Salon { get; set; }
            public Portail Portail { get; set; }
            public FenetreA FenetreA { get; set; }
            public FenetreB FenetreB { get; set; }
        }
     
     
    }
    code du winform (proj app WinFormNotify) utilisateur:

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    //ajout reference
    using LibMaison;
     
    namespace WinFormNotify
    {
        public partial class Form2 : Form
        {
            public Maison sweetHome = new Maison();
            public Form2()
            {
                InitializeComponent();
     
     
            }
            private void Form2_Load(object sender, EventArgs e)
            {
                sweetHome = new Maison();
     
     
     
                // 1-Portail
                // Alarm color Portail =>Coral
                sweetHome.Portail.AlarmeCouleur = Color.Coral;
                this.lblPortail.ForeColor = Color.White; 
                this.lblPortail.DataBindings.Add(new Binding("BackColor",sweetHome.Portail,"ColorState",true,DataSourceUpdateMode.OnPropertyChanged));
                this.lblPortail.DataBindings.Add(new Binding("Text", sweetHome.Portail, "IDType", true, DataSourceUpdateMode.OnPropertyChanged));
     
                // 2-Salon
                // Alarm color Salon =>LightBlue 
                sweetHome.Salon.AlarmeCouleur = Color.DarkBlue;
                this.lblSalon.ForeColor = Color.White;
                this.lblSalon.DataBindings.Add(new Binding("BackColor", sweetHome.Salon , "ColorState", true, DataSourceUpdateMode.OnPropertyChanged));
                this.lblSalon.DataBindings.Add(new Binding("Text", sweetHome.Salon, "IDType", true, DataSourceUpdateMode.OnPropertyChanged));
     
                // 3-FenA
                this.lblFenA.ForeColor = Color.White;
                this.lblFenA.DataBindings.Add(new Binding("BackColor", sweetHome.FenetreA, "ColorState", true, DataSourceUpdateMode.OnPropertyChanged));
                this.lblFenA.DataBindings.Add(new Binding("Text", sweetHome.FenetreA, "IDType", true, DataSourceUpdateMode.OnPropertyChanged));
     
                // 4-FenA
                this.lblFenB.ForeColor = Color.White;
                this.lblFenB.DataBindings.Add(new Binding("BackColor", sweetHome.FenetreB, "ColorState", true, DataSourceUpdateMode.OnPropertyChanged));
                this.lblFenB.DataBindings.Add(new Binding("Text", sweetHome.FenetreB, "IDType", true, DataSourceUpdateMode.OnPropertyChanged));
            }
     
     
     
            private void btnPortailAlarm_Click(object sender, EventArgs e)
            {
                if (sweetHome != null)
                {
                    sweetHome.Portail.EstAllume = !sweetHome.Portail.EstAllume;
                    //desarme Salon
                    sweetHome.Salon.EstAllume = ! sweetHome.Salon.EstAllume;
                }
            }
     
            private void btnSalonAlarm_Click(object sender, EventArgs e)
            {
                if (sweetHome != null)
                {
                    sweetHome.Salon.EstAllume = ! sweetHome.Salon.EstAllume;
                    sweetHome.Portail.EstAllume = ! sweetHome.Portail.EstAllume ;
                }
            }
     
            private void btnAlarmFenetres_Click(object sender, EventArgs e)
            {
                if (sweetHome != null)
                {
                    sweetHome.FenetreA.EstAllume = !sweetHome.FenetreA.EstAllume;
                    sweetHome.FenetreB.EstAllume = !sweetHome.FenetreB.EstAllume;
                }
     
            }
     
     
     
     
        }
     
    }
    bon code...
    Salut,

    Merci beaucoup pour ton aide, j'ai mis un peu de temps à comprendre, mais en pratiquant je penses avoir compris

    J'ai cependant juste une question: pourquoi ta classe qui étend "NotifyPropertyChanged" est à part? Je veux dire par la qu'elle est abstraite (enfin je suppose vu que pas de constructeur). Et que tu étend cette classe après à d'autres objet? Car j'ai essayé étendant "NotifyPropertyChanged" à une classe que j'instancie et cela fonctionne..

    Par exemple dans mon cas, ma maison contient une liste de pièces (cuisine, salon, chambres,..) Dans ma classe "Piece", j'ai donc quelques attribut comme:

    - chauffage (on/off)
    - température
    - fenetre (ouvert/fermé)
    - ...

    Et chaque état est notifié sur l'interface, donc un label qui indique si le chauffe est on ou off, un autre pour la température, etc...

    Je peux donc directement écrire:

    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
        public class Piece : INotifyPropertyChanged
        {
     
            public Piece()
            {
                //Constructeur
            }
     
            private String chauffage;
            public String Chauffage
            {
                get { return chauffage; }
                set
                {
                    chauffage = value;
                    OnPropertyChanged("Chauffage");
                }
            }
     
            public event PropertyChangedEventHandler PropertyChanged;
            protected internal void OnPropertyChanged(string nameProp)
            {
                PropertyChangedEventHandler handler = PropertyChanged;
                if (handler != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(nameProp));
            }
        }
    J'ai pris un exemple assez court Et dans ma form:

    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
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                maCuisine = new Piece();
                monSalon = new Piece();
                this.textBoxChauffeCsuisine.DataBindings.Add(new Binding("Text", maCuisine, "Chauffage", true, DataSourceUpdateMode.OnPropertyChanged));
                this.textBoxChauffeSalon.DataBindings.Add(new Binding("Text", monSalon, "Chauffage", true, DataSourceUpdateMode.OnPropertyChanged));
                maCuisine.Chauffe = "21";
            }
        }
    Cela fonctionne, et donc pourquoi dans ton exemple tu crée une class "membreMaison" ? Si ce que je pense est juste (je suis encore débutant ), c'est utilse dans le cas ou plusieurs classes étendent celle-ci, mais dans mon cas si je crée une classe membrePiece, il y a juste ma classe "Piece" qui va l'étendre...

    Voila, j'espère m'être fait comprendre Et merci encore pour ton aide

  6. #6
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour tatchi

    Tu as tres bien compris....J' ai mis ca parce que dans ton post tu as ecrit ceci:
    Et a coté de sa, j'ai créé un ensemble de classes (maison, pièces, parois, ouvertures, ..).
    Comme tu as cites plusieurs class qui gerent le meme comportement "etre alarme" j'ai pense que pour eviter d'implementer INotifyPropertyChanged dans tous ces Class on l'implemente dans l'ancetre avec les props communes et on l'herite ce qui permet d'eviter de reecrire ce code dans les class heritees .....economie de frappe donc.
    Ceci fait si jamais j'ai besoin d'un autre Class semblable au Class Piece ,je le fais deriver simplement sans ecrire de code supplementaire...

    Voila,seulement si tu as un seul Class pas besoin.....

    Un detail important ,j'ai code à la main Control.DataBindings.Add
    pour des raisons de comprehension,mais fait tu peux le faire directement rapidement dans le designer:
    Pour voir la Source de Donnees (class Piece) il faut faire :
    1/Menu pricincipal VS->Donnees-->Ajouter nvlle source>clik gauche->Objet
    2/choisir->objet ->cocher Piece et fin...
    3/Generer et il cree dans le designer un bindingsourcePiece...

    Panneau Propriete de chaque Control(label lblPiece par exemple)
    1/DataBindings->Avances ->click
    2/Fenetre faire =>
    Listbox Props du control : selectionner Text
    Combo Liaison :select.bindingSourcePiece et selectionner IDType
    Combo Mode Maj Source Donnees: OnProperyChanged

    et repeter pour BackColor...la meme chose....


    Autre detail imporant ,si ton Classe Piece gerent des list<T> ,il faut declarer à la place des BindingList<T> car BindingList implemente en interne INotifyPropertyChanged....

    bon code....

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    bonjour tatchi

    Tu as tres bien compris....J' ai mis ca parce que dans ton post tu as ecrit ceci:

    Comme tu as cites plusieurs class qui gerent le meme comportement "etre alarme" j'ai pense que pour eviter d'implementer INotifyPropertyChanged dans tous ces Class on l'implemente dans l'ancetre avec les props communes et on l'herite ce qui permet d'eviter de reecrire ce code dans les class heritees .....economie de frappe donc.
    Ceci fait si jamais j'ai besoin d'un autre Class semblable au Class Piece ,je le fais deriver simplement sans ecrire de code supplementaire...

    Voila,seulement si tu as un seul Class pas besoin.....

    Un detail important ,j'ai code à la main Control.DataBindings.Add
    pour des raisons de comprehension,mais fait tu peux le faire directement rapidement dans le designer:
    Pour voir la Source de Donnees (class Piece) il faut faire :
    1/Menu pricincipal VS->Donnees-->Ajouter nvlle source>clik gauche->Objet
    2/choisir->objet ->cocher Piece et fin...
    3/Generer et il cree dans le designer un bindingsourcePiece...

    Panneau Propriete de chaque Control(label lblPiece par exemple)
    1/DataBindings->Avances ->click
    2/Fenetre faire =>
    Listbox Props du control : selectionner Text
    Combo Liaison :select.bindingSourcePiece et selectionner IDType
    Combo Mode Maj Source Donnees: OnProperyChanged

    et repeter pour BackColor...la meme chose....


    Autre detail imporant ,si ton Classe Piece gerent des list<T> ,il faut declarer à la place des BindingList<T> car BindingList implemente en interne INotifyPropertyChanged....

    bon code....
    Super, je te remercie pour ta précieuse aide

    J'en profite de t'avoir d'ailleurs pour te poser deux dernières petites questions. Dans ta première réponse, j'ai vu que tu utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       public enum ElementType
       {
          Salon,
          Portail,
          FenetreA,
          FenetreB
     
       }
    Mais je vois pas vraiment à quoi ça sert? Et je suppose que si tu l'utilise, c'est qu'il y a une raison.. Car si je comprends bien, cela permet de récupérer le type d'un objet. Mais pour cela, je peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Salon monSalon = new Salon();
                Debug.Print(monSalon.GetType().Name);
    Je viens d'essayer et sa me renvoie "Salon" (le nom de la classe je suppose).
    Je ne comprends donc pas trop à quoi cela peut être utile?

    Deuxième question: Dans mon programme, j'ai pour chaque pièce, un ensemble de label représentant les fenêtres (fenetre cuisine, fenetre1 salon, fenetre2 salon, etc..). Et lorsque je clique dessus, je change la couleur de fond (rouge/vert) afin d'indiquer à l'utilisateur qu'il a ouvert/fermé la fenêtre.

    J'aurais pu, pour chaque label, créer un événement (lors du click), ou j'aurais dis par exemple pour la fenetre cuisine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maMaison.Listepièces[0].ListOuvertueres[0].ouvert = true
    Ceci est un exemple. Mais cela implique que je sache très bien que le premier élément de ma listpièce est ma cuisine, et que la première fenetre correspond à celle que je clique. Je le sais vu que je connais dans mon programme l'ordre dans lequel j'ajoute ces objet a la liste. Mais bon je trouve ça pas très "pro". C'est trop "statique". Je veux dire par la que si dans mon code j'ajoute le salon avant la cuisine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maMaison.AjouterPiece(monSalon)
    maMaison.AjouterPiece(maCuisine)
    Et bien c'est fichu. J'ai donc créé un attribut "nomOuverture" (de type String) dans ma classe ouverture. Et lors de l’instanciation d'un objet Ouverture, je passe le nom du label de l'ouverture correspondante. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ouverture fenetreSalon = new Ouverture(labelFenetreSalon.name)
    Et ainsi, lors du clique sur label (qui représente une ouverture), je récupère le nom de ce label, et je lance une fonction qui pour chaque pièce, va regarder dans chaque ouverture voir si l'attribut "nomOuverture" correspond à ce nom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void labelFenetre_Click(object sender, EventArgs e)
    {
         var send = (Label)sender;
         TrouverPiece(send.Name.ToString());
    }
    Mais voila, je me demande si il n'y aurait pas plus facile? Car la ca va je n'ai pas énormément d'éléments dans mes listes (3 pièces et pour chaque max 3 ouvertures). Mais par soucis de "bonne" programmation, et puis aussi pour apprendre, je profite de tes services afin de savoir si il n'existerais pas une meilleur solution.

    J'espère m'être fait comprendre (ce n'est pas toujours évident ). Je te remercie encore pour ton aide

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Re,

    Je viens de tester ta solution pour les databindings avec le designer, mais cela ne fonctionne pas.. Voila ma classe Salon:

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel;
     
    namespace WindowsFormsApplication1
    {
        public class Salon
            {
     
                public Salon()
                {
     
                }
     
                private String nom;
                public String Nom
                {
                    get { return nom; }
                    set
                    {
                        nom = value;
                    }
                }
     
            }
        }
    Je ne sais pas si il faut qu'elle hérite de "INotifyPropertyChanged". J'ai essayé avec aussi mais pareil..

    Et dans ma form, j'ai un textbox que j'ai bien lié comme tu m'a décrit. Pour preuve:



    As-tu une idée?

    EDIT:

    J'ai trouvé sur un tuto qu'il fallait utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    airplaneBindingSource.Add(new Airplane("Boeing 747", 800));
    Dans mon cas cela donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private void Form1_Load(object sender, EventArgs e)
            {
                Salon monSalon = new Salon();
                salonBindingSource.Add(monSalon);
                monSalon.Nom = "test";
     
            }
    Mais cela ne marche pas. Par contre si j'ajoute au constructeur le nom alors ca marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            private void Form1_Load(object sender, EventArgs e)
            {
                Salon monSalon = new Salon("test");
                salonBindingSource.Add(monSalon);
     
            }
    La, ça m'affiche "test". Par contre si je modifie avec l'attribut "nom" grâce au set, il ne change pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private void Form1_Load(object sender, EventArgs e)
            {
                Salon monSalon = new Salon("test");
                salonBindingSource.Add(monSalon);
                monSalon.Nom = "test2";
     
            }
    M'affiche toujours "test" et non "test2". Par contre si j'écrit d'abord monSalon.Nom = "test2"; et puis salonBindingSource.Add(monSalon); alors la il m'affiche bien "test2"... Bizarre non? En gros il affiche la valeur au moment ou je l'ajoute au bindingsource, mais ne fais pas le changement quand la valeur change..

  9. #9
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    rebonjour tatchi

    Pourquoi un enum ?
    Un enum permet de ne pas taper n'importe quoi et de se rappeler dans 15 ans ,si j'ose dire, comment on a nomme les pieces (ID du salon,de cuisine etc..alarme chauffage etc...)
    Pourquoi un seul Class Ouverture?Parce que la fonctionnalite recherchee est d'ALARMER et non de "CATEGORISER" les ouvertures....
    Pourquoi le binding fonctionne quand on ajoute mais pas quand pas on sette?:
    BindingSource possede 2 methodes si tu veux:
    -BeginInit() et EndInit()
    -entre l'appel à ses 2 methodes il peut recevoir une liste d'objets en general de meme type(le type peut etre lui-meme une hierarchie complexe :Class membres , Liste<> membres)....
    -il maintient une copie en interne(prop list<> ) et son travail est de la maintenir à jour (add,remove,changed) .
    Il faut acceder à l' element sette par index dans sa prop list ....crade.

    En fait j'ai bien compris ton besoin maintennant et je pense que ton idee de fournir une reference sur le label utilise au class Ouverture est plus simple ....
    Ensuite l'acces à l'element en cas d'imbrication tu peux le simplifier en utilisant un "hybride formidable" le KeyedCollection qui herite de HashTable(dico) et ICollection<T> donc acces par cle et par index.....

    bref je repost le code revu qui fonctionne parfaitement sans binding ni tutti quanti :
    code .cs (projet libmaison 2)

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.ComponentModel;
    using System.Drawing;
    using System.Collections.ObjectModel;
    using System.Collections.Specialized;
    using System.Windows.Forms;
    namespace LibMaison2
    {
     
     
        //Ouverture
        public class Ouverture : INotifyPropertyChanged
        {
            private Color rougeAlarme = Color.Red;
            private Color vertNormal = Color.Lime;
            public Ouverture(string pID, Label lb)
            {
                ID = pID;
                LBL = lb;
                LBL.Name = "lblID";
                LBL.BackColor = vertNormal ;
                LBL.Text = "ID  ";
                EstAllume = false;
            }    
            #region Proprietes
            private string id;
            public string ID
            {
                get { return id; }
                set
                {
                    id = value;
                    OnPropertyChanged("ID");
                }
            }
            private Label lbl;
            public Label LBL 
            {
                get { return lbl; }
                set
                {
                    lbl = value;
                    OnPropertyChanged("LBL");
                }
            }
     
            // etat actuel du membre: arme ou desarme 
            private bool estAllume;
            public bool EstAllume
            {
                get { return estAllume; }
                set
                {
                     estAllume = value;
                     if (estAllume)
                     {
                         LBL.BackColor= rougeAlarme;
                     }
                     else
                     {
                         LBL.BackColor = vertNormal;
                     } 
                    OnPropertyChanged("EstAllume");
                }
            }
     
            #endregion
            public event PropertyChangedEventHandler PropertyChanged;
            protected internal void OnPropertyChanged(string nameProp)
            {
                PropertyChangedEventHandler handler = PropertyChanged;
                if (handler != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(nameProp));
            }
        }
     
        // KeyedCollection Ouvertures
        public class Ouvertures : KeyedCollection<string, Ouverture>
        {
            public Ouvertures() : base()
            {
            }
            protected override string GetKeyForItem(Ouverture item)
            {
                return item.ID;
            }
     
     
        }
        //class Piece
        public class Piece : INotifyPropertyChanged
        {
            #region Proprietes
            private string nom;
            public string Nom
            {
                get { return nom; }
                set
                {
                    nom = value;
                    OnPropertyChanged("Nom");
                }
            }
            private Ouvertures ouvertures;
            public Ouvertures Ouvertures
            {
                get { return ouvertures; }
                set
                {
                    ouvertures = value;
                    OnPropertyChanged("Ouvertures");
                }
            }
     
     
     
            #endregion
     
            public Piece(string pNom)
            {
                Nom = pNom;
                Ouvertures = new Ouvertures();
     
            }
     
     
            public event PropertyChangedEventHandler PropertyChanged;
            protected internal void OnPropertyChanged(string nameProp)
            {
                PropertyChangedEventHandler handler = PropertyChanged;
                if (handler != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(nameProp));
            }
        }
     
     
     
     
     
     
        //   Maison
        public class Maison
        {
            #region Proprietes
            public Pieces Pieces { get; set; }
            #endregion
            public Maison()
            {
                Pieces = new Pieces();
     
            }
     
     
        }
        // KeyedCollection Ouverture
        public class Pieces : KeyedCollection<string, Piece>
        {
            public Pieces() : base()
            {
            }
            protected override string GetKeyForItem(Piece item)
            {
                return item.Nom;
            }
        }
     
    }
    code .cs du winform utilisateur(projet WinNotify2) :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    //Reference
    using LibMaison2;
    namespace WinNotify2
    {
        public partial class frmTestControl : Form
        {
            Ouverture ov;
            Piece maPiece;
            Maison sweetHome;
            public frmTestControl()
            {
                InitializeComponent();
     
            }
            private void frmTestControl_Load(object sender, EventArgs e)
            {
                sweetHome = new Maison();
                maPiece = new Piece("Salon");
                ov = new Ouverture("PorteSalon", this.label1);
                maPiece.Ouvertures.Add(ov);
                ov = new Ouverture("Fen1Salon", this.label2);
                maPiece.Ouvertures.Add(ov);
                ov = new Ouverture("Fen2Salon", this.label3);
                maPiece.Ouvertures.Add(ov);
                sweetHome.Pieces.Add(maPiece);
     
                maPiece = new Piece("Cuisine");
                ov = new Ouverture("PorteCuisine", this.label4);
                maPiece.Ouvertures.Add(ov);
                ov = new Ouverture("Fen1Cuisine", this.label5);
                maPiece.Ouvertures.Add(ov);
                sweetHome.Pieces.Add(maPiece);
     
                listBoxPieces.DataSource = sweetHome.Pieces;
                listBoxPieces.DisplayMember = "Nom";
                listBoxPieces.SelectedIndex = -1;
     
                listBoxAlarmesCuisine.DataSource = sweetHome.Pieces["Cuisine"].Ouvertures;
                listBoxAlarmesCuisine.DisplayMember = "ID";
                listBoxAlarmesCuisine.SelectedIndex = -1;
            }
     
     
     
            // Acces par KEY dans KeyedCollection<string, Ouverture>
            // & KeyedCollection<string, Piece>
            private void btnCuisineAlarm_Click(object sender, EventArgs e)
            {
                ov = this.sweetHome.Pieces["Cuisine"].Ouvertures["PorteCuisine"];
     
                ov.EstAllume = !ov.EstAllume;
            }
     
            private void btnSalonAlarm_Click(object sender, EventArgs e)
            {
                ov = this.sweetHome.Pieces["Salon"].Ouvertures["PorteSalon"];
                ov.EstAllume = !ov.EstAllume;
                ov = this.sweetHome.Pieces["Salon"].Ouvertures["Fen2Salon"];
                ov.EstAllume = !ov.EstAllume;
            }
            //
            //au lieu de cliquer sur  bouton on peut aussi faire avec double-click 
            //sur element selectionne:
            //
            private void listBoxAlarmesCuisine_SelectedIndexChanged_1(object sender, EventArgs e)
            {
                if (listBoxAlarmesCuisine.SelectedIndex < 0) return;
                int index = listBoxAlarmesCuisine.SelectedIndex;
                ov = (Ouverture)listBoxAlarmesCuisine.Items[index];
                ov.EstAllume = !ov.EstAllume;
            }
            //
            // NAVIGATION PIECES : acces par index
            //
            private void listBoxPieces_SelectedIndexChanged_1(object sender, EventArgs e)
            {
                if (listBoxPieces.SelectedIndex < 0) return;
                StringBuilder sb = new StringBuilder();
     
                int index = listBoxPieces.SelectedIndex;
                Piece p = (Piece)listBoxPieces.Items[index];
                sb.AppendLine("Piece : " + p.Nom);
                foreach (Ouverture ouvert in p.Ouvertures)
                {
                    ouvert.EstAllume = false;
                    sb.AppendLine("Alarme N° :" + p.Ouvertures.IndexOf(ouvert).ToString());
     
                }
                MessageBox.Show(sb.ToString());
     
            }
     
     
        }
    }
    En esperant que ca reponde au souci....
    bon code....

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Encore un tout grand merci pour ton aide

    Je passe le sujet en résolu

    A bientôt!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 26/02/2015, 01h20
  2. Passer des donees au constructeur de la classe
    Par condor_ dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2012, 15h49
  3. Passage de Paramètre par référence constructeur
    Par malus56 dans le forum Débuter
    Réponses: 3
    Dernier message: 11/07/2011, 10h10
  4. Comment passer des parametres au constructeur d'un service?
    Par jnc65 dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 06/08/2009, 20h41
  5. Passer un parametre au constructeur d'un UC
    Par Gregory.M dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 24/05/2008, 19h31

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