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 :

Comment acceder a un variable extérne depuis une classe


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Février 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 106
    Billets dans le blog
    1
    Par défaut Comment acceder a un variable extérne depuis une classe
    Bonjour a tous
    j'ai une app avec une form qui contiens bien sur des objets et des variables.
    mon problème est que lorsque j'aimerai accéder a des variables déclarés comme public dans ma Form1 depuis mon constructeur de classe mais j'arrive pas, voici un boup de code pour mètre ça en claire
    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
     
    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;
    using System.Drawing.Drawing2D;
    using System.Resources;
     
    namespace jeux
    {
        public partial class jeux1 : Form
        {
        public string tmp="blabla";
        ...
        }
    }
    ma classe
    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
     
    using System;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace jeux
    {
        public class _player
        {
            // contructeur
            public _player()
            {
                MessageBox.Show(jeux1.tmp);
            }
        }
    }
    ça ne marche pas,pas moyen pour acceder a mon variable, j'ai bon essayé comme

    MessageBox.Show(jeux1.ActiveForm.tmp);
    MessageBox.Show(tmp);

    j'ai contourné mon problème grâce au passage du variable tmp a une fonction par référence mais après j'ai constaté que j'ai besoin de beaucoup de variable, je peux pas tous les passer par référence
    _________________________________________________
    bon je m'excuse d'abuser a chaque fois quand je galère mais j'ai bon chercher ailleurs sans résultat, et si ça parait facile a faire et/ou inutile comme sujet, qu'un admin/mod supprime ce poste.
    merci d'avance

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    MessageBox.Show(jeux1.tmp);

    ici jeux1 est un type, pas une variable

    il te faut une instance de jeux1 pour accéder à la variable de cette instance
    si tu as plusieurs fenetre de type jeux1 ouvertes, comment veux tu que ca devine le tmp de laquelle tu veux ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé

    Inscrit en
    Février 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 106
    Billets dans le blog
    1
    Par défaut
    Ça serai plutôt facile si je te dis
    comment accéder au variables d'une forme depuis une classe

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    Passe la référence de ta form à ta classe et tu pourras y accèder
    Lors de la construction.

  5. #5
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut
    Woufeigh tu peux nous expliquer ça mieux par un petit bout de code ??

  6. #6
    Membre confirmé Avatar de obitskater
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2008
    Messages : 163
    Par défaut
    T'as classe jeux1 n'étant pas statique ainsi que ta variable tmp, il faut que tu instancies un objet de type jeux1 pour accèder à ta variable tmp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace jeux
    {
        public class _player
        {
            // contructeur
            public _player()
            {
                jeux1 myJeux1 = new jeux1();
                MessageBox.Show(myJeux1.tmp);
            }
        }
    }

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Par défaut
    Ou alors comme cela, mais dans les deux cas tu dois avoir une instance de ton formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Form1 : Form{
    public string mavariable="toto";
     
    Player player = new Player(this);
     
    }
     
    public class Player{
     
    public Player(Form1 form){
    messagebox.Show(form.mavariable);
    }
     
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/10/2009, 10h52
  2. Réponses: 1
    Dernier message: 31/08/2008, 19h04
  3. Réponses: 4
    Dernier message: 12/03/2008, 13h18
  4. Réponses: 3
    Dernier message: 12/10/2005, 09h23

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