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 :

mettre a jour un label depuis des threads


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut mettre a jour un label depuis des threads
    bonjour
    j'ai un programme et il y a plusieurs classe et dans chaque classe des treads.
    et j ai besoin de mettre a jour un label depuis ces classes et les thread.

    voici le code qui bug :


    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
     static public void SetInfoStatut(string TxtLabelStatut)
            {
                if (InvokeRequired)
                {
                    // Passage des parametre a la fonction UpdateLabel
                    BeginInvoke((MethodInvoker)delegate
                    {
                        SetInfoStatut(TxtLabelStatut);
                    });
                }
                else
                {
                    labelStatut.Text = TxtLabelStatut;
                }
            }
    et l 'erreur :

    Error 4 An object reference is required for the non-static field, method, or property 'System.Windows.Forms.Control.BeginInvoke(System.Delegate)'
    Error 3 An object reference is required for the non-static field, method, or property 'System.Windows.Forms.Control.InvokeRequired.get'
    Error 5 An object reference is required for the non-static field, method, or property 'WindowsFormsApplication3.Form1.labelStatut'
    Une idée ?
    parce que la je vois pas

    merci

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Enlève le static de la méthode. Et si tu ne comprends pas pourquoi, va lire un cours ou fait des recherches sur le mot clé static pour comprendre

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Oui si j'enlève le static sa marche mais je n'arrive plus a accéder a ma méthode depuis les autres classes.

    j'y accède de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.SetInfoStatut("coucou");
    mais j ai cette erreur (sans le static) :
    Error 5 An object reference is required for the non-static field, method, or property 'WindowsFormsApplication3.Form1.SetInfoStatut(string)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Pour accéder à une méthode non statique, il faut déclarer ta classe avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form1 maform = new Form1();
    maform.SetInfoStatut("coucou");
    Pas sur de la synthaxe, je suis en VB.NET en ce moment, mais tu vois l'idée je pense

  5. #5
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Même réponse que précédemment, lis un cours. Car là tu te lances dans du développement avec un langage orienté objet sans même connaître les bases de la POO

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Je reprend un projet pour mon BTS d'un mec qui fout rien alors je galère enfin je vais voir si je trouve un truc

  7. #7
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Citation Envoyé par jeje-50 Voir le message
    Je reprend un projet pour mon BTS d'un mec qui fout rien alors je galère enfin je vais voir si je trouve un truc
    Où est le rapport ? Ce n'est pas parce qu'on reprend le travail d'un autre qu'on ne connait pas l'usage de static et des instances...

    Reprendre le code d'un autre est une autre part du métier. Vois ça comme un avant-gout de ton futur métier.

    Une méthode static s'emploie comme ça :.
    Une méthode non static (d'instance) comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaClasse instance = new MaClasse();
    instance.MaMéthode();
    comme l'a dit StormimOn, c'est dans tes cours...

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

Discussions similaires

  1. Mettre a jour des controls depuis classe c#
    Par mehdima dans le forum ASP.NET
    Réponses: 1
    Dernier message: 15/04/2013, 09h31
  2. Réponses: 1
    Dernier message: 15/01/2013, 14h39
  3. [MySQL] Mettre a jour une table avec des checkbox
    Par dlecteur dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 07/09/2010, 11h50
  4. Réponses: 4
    Dernier message: 03/11/2006, 15h35
  5. Mettre à jour une table depuis une autre
    Par snubi dans le forum Access
    Réponses: 1
    Dernier message: 20/04/2006, 19h28

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