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

Windows Forms Discussion :

[C#] Question sur variable "protected"


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut [C#] Question sur variable "protected"
    Bonjour !!
    J'ai une classe A qui contient des variables "protected".
    Comment faire pour que ces variables soient accessible depuis une classe B ?

    J'ai cru voir qu'il fallait que B soit dérivée de A. Comment faire cela ?

    Sachant que ma classe B dérive déjà de la classe form.

  2. #2
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    pour que B "voit" les variables de A :

    1) soit tu met les variables de A en public
    2) Soit B hérite de A. Mais si B hérite déjà de Form, tu va pas pouvoir (pas d'héritage multiple en C#.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Salut Guitoux !
    Ok !!
    C'est bien ce que j'avais cru comprendre !!

    Sinon, je peux encore mettre les variables de A en "private" et créé des méthodes publiques dans A pour retourner chacun des variables ... ?

  4. #4
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    oui, enfin plutôt des propriétés (accesseurs) au lieu de méthides, c'est plus propre

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Peux tu me donner un exemple rapide de l'utilisation d'un accesseur ...
    Si ça te demand epas torp de temps ?

    Moi je fais ça:
    Dans class A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        class XMLSettings
        {
            private string xml_user;
    ...
            public string GetUser()
           {
                  return this.xml_user;
           }
    ....
     
    }
    Dans class B
    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
     
        public partial class Settings : Form
        {
            public Settings()
            {
                InitializeComponent();
                this.xmlDoc = new XMLSettings();
            }
    ...
    ..
            private void LoadAccount()
            {
                this.T_Username.Text = xmlDoc.GetUsername();
            }
    ....

  6. #6
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class XMLSettings
    {
       private string xml_user;
    ...
       public string Xml_User
       {
          get { return this.xml_user; }
          set { xml_user = value; } // seulement si tu veut que ta variable soit aussi en écriture
       }
    ....
    }
    Dans B :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void LoadAccount()
    {
       this.T_Username.Text = xmlDoc.Xml_User;
    }

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Ok, c'est super ça ...
    Désolé tu dois me prendre pour un benet ...
    Mais comment on appelle la fonction ensuite ??

  8. #8
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Quelle fonction ??

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Oula pardon !!

    J'ai essayé !

    pour récupérer, je récupère comme une variable.
    Et pour affecté, je fais xmldoc.xml_user="ma_valeur";

    Merci pour ton aide !!
    C'est très pratique ça !!!

  10. #10
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    Juste une petite astuce leNeindre. Des accesseur peut avoir des type différent

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class XMLSettings
    {
       private string xml_user;
    ...
       public string Xml_User
       {
          get { return this.xml_user; }
          private set { xml_user = value; } 
       }
    ....
    }
    En mettant le set en private, tu permet seulement la modification a l'intérieur de la class mais tu peux la récupéré de l'extérieur. Des fois c'est bien pratique et ca renforci le code. Dans ton cas c'est pas pratique mais je voulais juste te donner ce tuyau.

  11. #11
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    +1

    Exact, c'est une nouveauté de C# 2.0 fort sympatique ma foi, très utile même.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    C'est bon à savoir ça !!
    Merci pour l'info

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

Discussions similaires

  1. [Singleton] question sur variable static
    Par ultimax dans le forum Langage
    Réponses: 6
    Dernier message: 13/01/2010, 11h43
  2. Question sur variables & Recordset
    Par Jordmund dans le forum VBA Access
    Réponses: 9
    Dernier message: 20/06/2007, 14h41

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