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 :

Récuperer variable entre classes


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Récuperer variable entre classes
    Bonjour à tous,

    J'ai un soucis pour récupérer une variable entre 2 classes différentes :

    Dans la premiere classe j'ai cet cet évènement et je souhaite récupérer la valeur de la variable conso.Sejour pour l'utiliser dans mon autre classe.

    Quand je fais un messagebox j'ai bien la bonne valeur qui s'affiche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void listViewClientsPresents_DoubleClick(object sender, EventArgs e)
            {
                UserControlChoixConsommation conso = new UserControlChoixConsommation();
                conso.Sejour = listViewClientsPresents.SelectedItems[0].Text;
                MessageBox.Show(conso.Sejour);
            }
    En revanche dans l'autre classe, j'ai mis ceci comme code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string Sejour { get; set; }
    Et après dans mes fonctions j'ai mis du code comme celui-ci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SqlCommand cmd2 = new SqlCommand("SELECT COUNT(TJ_CONSOMMER.ID_Consommation) FROM dbo.TJ_CONSOMMER INNER JOIN CONSOMMATION ON CONSOMMATION.ID_Consommation = TJ_CONSOMMER.ID_Consommation INNER JOIN SEJOUR ON SEJOUR.ID_Sejour = TJ_CONSOMMER.ID_Sejour WHERE CONSOMMATION.ID_CONSOMMATION = '" + Id_Conso + "' AND SEJOUR.ID_Sejour = '"+Sejour+"'", cnx);
                    MessageBox.Show(Sejour);
    Le soucis est que ici dans le messagebox en revanche je n'ai plus la bonne valeur de la variable mais j'ai tout simplement un messagebox avec du vide à l'intérieur.

    Aidez moi s'il vous plait

    Bonnes fêtes de fin d'année à vous

    Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    Je pense que tu devrais te familiariser un peu plus avec les concept Objet.
    Si je comprend bien, tu as 2 UC dans une fenêtre et tu voudrais qu'il communique entre eux.
    Dans ton événement, tu créé une nouvelle instance de ton UC de destination, non seulement cette nouvelle instance ne connait pas celle qui existe déjà (ce sont 2 instances bien distincte) mais en plus sa durée de vie s’arrête quand l'événement se termine.

    Donc, dans ton cas et de manière générale, je peux te dire que tes UC ne doivent pas se connaitre entre eux sinon tu perd l’intérêt des UCs.
    Bon, comment faire alors ?
    C'est la où le bas blesse pour moi, je ne sais pas vraiment ce qu'il est possible de faire ou pas en WinForms.
    Donc dans le doute, je mettrais en place un simple pattern Observer.
    Je laisse le soin à ceux qui connaisse mieux que moi WinForms t'expliquer si il y a d'autres possibilités.

    Bonne continuation.
    L’aléatoire n’existe pas en informatique, c’est juste un moyen de dire que l’on a pas encore compris.

  3. #3
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour , je suis d'accord avec Kyroon pour dire qu'il y a une notion de conception objet qui coince ici . Donne nous un peu plus d'infos , tes classes (constructeurs etc .. )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SqlCommand cmd2 = new SqlCommand("SELECT COUNT(TJ_CONSOMMER.ID_Consommation) FROM dbo.TJ_CONSOMMER INNER JOIN CONSOMMATION ON CONSOMMATION.ID_Consommation = TJ_CONSOMMER.ID_Consommation INNER JOIN SEJOUR ON SEJOUR.ID_Sejour = TJ_CONSOMMER.ID_Sejour WHERE CONSOMMATION.ID_CONSOMMATION = '" + Id_Conso + "' AND SEJOUR.ID_Sejour = '"+Sejour+"'", cnx);
                    MessageBox.Show(Sejour);
    Si Sejour est une propriété comme tu dit , tu ne peut pas l'avoir seul dans ta messageBox ca doit etre : je pense avoir besoin d'un peu plus d'infos pour t'aider .

    Joyeuses fêtes !
    throw new NoSignatureException();

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2015
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    Joyeux noël.

    Pour faire passer ta variable d'une classe a l'autre tu as trois solutions.
    La plus simple est de mettre ta variable en static pour pas créer une nouvelle instance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static string Sejour { get; set; }
    Moi je préfère l'écrire de manière plus scolaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private static string sejour;
     
    public static string Sejour
    {
          get { return sejour; }
          set { sejour = value; }
    }

    Tu peux aussi utiliser le constructeur.

    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
    namespace exemple
    {
          public classe ClasseExemple  
         {
                  private  string sejour = null;
     
                  public static string Sejour
                  {
                     get { return sejour; }
                     set { sejour = value; }
                  }
     
             public ClasseExemple (string _sejour)
             {
                 this.sejour =  _sejour;    
             }
     
          }
     
    public classe ClasseExemple2  
         {
     
             public ClasseExemple2 ()
             {
     
             }
     
              private void Fonction()
              {
                  string sejour = "je code à l'arrache un matin de noël plein comme une huître";
                  ClasseExemple bidon = new ClasseExemple(sejour);
                  MessageBox.Show(bidon.Sejour);
              }
          }
    }
    Dernière solution c'est de faire une classe partial, mais c'est plus de l'organisation que de la PPO.

    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
     
     
    namespace exemple
    {
          public partial classe ClasseExemple3  
         {   
             public ClasseExemple3 ()
             {
     
             }
        }
     
        public partial classe ClasseExemple3  
       {   
     
        }
     
    }
    Note importante les classes peuvent être dans des fichiers .cs avec des noms différent

Discussions similaires

  1. passer variables entre classes
    Par MOLOT dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 23/02/2010, 08h41
  2. Comment passer des variables entre classe ?
    Par flingue dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 02/04/2009, 08h28
  3. [débutant] variable entre class
    Par rvzip64 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 25/02/2009, 08h55
  4. passage de variables entre classes
    Par soujava dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 28/04/2008, 11h14
  5. débutant:utilisation de variable entre classe
    Par troojan dans le forum MFC
    Réponses: 1
    Dernier message: 07/12/2005, 23h31

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