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 :

Modifier label dans Form depuis classe


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut Modifier label dans Form depuis classe
    Bonjour,

    Dans une classe j'ai une fonction

    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
    public static MainForm frmMainForm = new MainForm();
     
     
            public static void InitialiserConfig()
            {
                try
                {
                    string CheminCompletFichierConfiguration = Application.StartupPath + "\\options.xml";
                    INFO_CONFIG MaConfig = new INFO_CONFIG(CheminCompletFichierConfiguration);
                    Clients = MaConfig.RécupérerUneListeDeValeurDeConfig("Client", "Numéro");
                    InitialiserConfigSAP();
     
     
                   MessageBox.Show(frmMainForm.lblInfos.Text);
                    frmMainForm.lblInfos.Text = "TEST";
                    MessageBox.Show(frmMainForm.lblInfos.Text);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Je veux écrire "TEST" dans le label lblInfos de la MainForm, cependant, le texte ne change pas. En débug je vois bien le programme passé dessus ... je ne sais plus ou chercher je fais des essais depuis 1 j

    Dans ma 1è MessageBox j'ai bien le texte initial, et dans la 2ème il me renvoie bien test, mais le label ne change pas

    Merci

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    il faudrait nous montrer tes vraies classes, là tout le code semble dans la même portée et donc devrait fonctionner.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    C'est ça dont tu as besoin ?

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Login;
    using ConnexionsSAP;
    using PanneauDeConfiguration;
    using System.Windows.Forms;
     
    namespace Prometheus
    {
        public partial class MdlConfig
        {
            //public static int Temporisation;
            public static List<string> Clients;
            //public string Titre = "";
            //public bool EnregistrementAuto;
            //public string FichierTemp = "";
            //public string FichierImg = "";
            //public string RepertoireResultat = "";
            //public string LumierePied = "";
            //public string LumiereFocus = "";
            //public System.DateTime DateDernièreMaintenance;
            public static ConnexionSAP r3con = new ConnexionSAP();
            public static MainForm frmMainForm = new MainForm();
     
     
            public static void InitialiserConfig()
            {
                try
                {
                    string CheminCompletFichierConfiguration = Application.StartupPath + "\\options.xml";
                    INFO_CONFIG MaConfig = new INFO_CONFIG(CheminCompletFichierConfiguration);
                    Clients = MaConfig.RécupérerUneListeDeValeurDeConfig("Client", "Numéro");
                    //Temporisation = Convert.ToInt32(MaConfig.RécupérerUneValeurDeConfig("OPTIONS", "Temporisation", typeof(int)));
                    //MaConfig.RécupérerUneValeurDeConfig("OPTIONS", "Grossissement", Grossissement);
                    //MaConfig.RécupérerUneValeurDeConfig("OPTIONS", "Titre", Titre);
                    //MaConfig.RécupérerUneValeurDeConfig("OPTIONS", "Enregistrement Automatique", EnregistrementAuto);
                    //MaConfig.RécupérerUneValeurDeConfig("INFO", "Date Dernière Maintenance", DateDernièreMaintenance);
                    //MaConfig.RécupérerUneValeurDeConfig("Emplacement", "Fichier temp", FichierTemp);
                    //MaConfig.RécupérerUneValeurDeConfig("Emplacement", "Fichier img", FichierImg);
                    //MaConfig.RécupérerUneValeurDeConfig("Emplacement", "Répertoire Resultat", RepertoireResultat);
                    //MaConfig.RécupérerUneValeurDeConfig("Lumières", "Pied", LumierePied);
                    //MaConfig.RécupérerUneValeurDeConfig("Lumières", "focus", LumiereFocus);
                    InitialiserConfigSAP();
     
                    MessageBox.Show(frmMainForm.lblInfos.Text);
     
                    if (r3con.ModeConnexion == "DEVELOPPEMENT")
                    {
                        frmMainForm.lblInfos.Text = " Connecté sur SAP / Système : D04 ";
                    }
                    else if(r3con.ModeConnexion == "QUALITE")
                    {
                        frmMainForm.lblInfos.Text = " Connecté sur SAP / Système : Q06 ";
                    }
                    else if(r3con.ModeConnexion == "PRODUCTION")
                    {
                        frmMainForm.lblInfos.Text = " Connecté sur SAP / Système : P05 ";
                    }
     
                    MessageBox.Show(frmMainForm.lblInfos.Text);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
     
            public static void InitialiserConfigSAP()
            {
                string CheminCompletFichierConfiguration = Application.StartupPath + "\\options.xml";
                r3con = new ConnexionSAP(CheminCompletFichierConfiguration);
            }
     
            public static void AFaireUneSeuleFoisPourGénérerLaConfigParLeDéveloppeur()
            {
                try
                {
                    List<string> ListeValeurs = new List<string>();
                    INFO_CONFIG CréationDeLaConfig = new INFO_CONFIG();
                    CréationDeLaConfig.EmplacementFichierConf = Application.StartupPath + "\\options.xml";
                    //CréationDeLaConfig.AjouterUneConfig("OPTIONS", "Temporisation", MDP.NiveauOpérateur, "2000", PanneauDeConfiguration.VALEUR.ValeurTypeNumériqueInteger.ToString(), new List<string>());
                    //CréationDeLaConfig.AjouterUneConfig("OPTIONS", "Grossissement", MDP.NiveauOpérateur, "5.3", PanneauDeConfiguration.VALEUR.ValeurTypeNumériqueDouble.ToString(), new List<string>());
                    //CréationDeLaConfig.AjouterUneConfig("OPTIONS", "Titre", MDP.NiveauOpérateur, "Programme blabla", PanneauDeConfiguration.VALEUR.ValeurTypeTexte.ToString(), new List<string>());
                    //CréationDeLaConfig.AjouterUneConfig("OPTIONS", "Enregistrement Automatique", MDP.NiveauRégleur, "True", PanneauDeConfiguration.VALEUR.ValeurTypeCheck.ToString(), new List<string>());
                    //CréationDeLaConfig.AjouterUneConfig("INFO", "Date Dernière Maintenance", MDP.NiveauRégleur, "08/02/1986", PanneauDeConfiguration.VALEUR.ValeurTypeDate.ToString(), new List<string>());
                    //ListeValeurs = new List<string>();
                    ListeValeurs.Add("DEVELOPPEMENT");
                    ListeValeurs.Add("PRODUCTION");
                    ListeValeurs.Add("QUALITE");
     
     
                    ConnexionSAP MaConnexionSAP = new ConnexionSAP();
     
     
     
                    //CréationDeLaConfig.AjouterUneConfig("Emplacement", "Fichier temp", MDP.NiveauAdministrateur, "c:\\temp\\temp.txt", PanneauDeConfiguration.VALEUR.ValeurTypeEmplacementFichier.ToString(), new List<string>());
                    //CréationDeLaConfig.AjouterUneConfig("Emplacement", "Fichier img", MDP.NiveauRégleur, "c:\\img\\img.jpg", PanneauDeConfiguration.VALEUR.ValeurTypeEmplacementFichier.ToString(), new List<string>());
                    //CréationDeLaConfig.AjouterUneConfig("Emplacement", "Répertoire Resultat", MDP.NiveauRégleur, "c:\\", PanneauDeConfiguration.VALEUR.ValeurTypeEmplacementRépertoire.ToString(), new List<string>());
                    ListeValeurs = new List<string>();
                    ListeValeurs.Add("0000100000");
                    ListeValeurs.Add("0000100027");
                    CréationDeLaConfig.AjouterUneConfig("Client", "Numéro", MDP.NiveauAdministrateur, "0000100000", PanneauDeConfiguration.VALEUR.ValeurTypeListeModifiable.ToString(), ListeValeurs);
                    //CréationDeLaConfig.AjouterUneConfig("Lumières", "focus", MDP.NiveauProgrammeur, "(1 0 1 0 1)", PanneauDeConfiguration.VALEUR.ValeurTypeListeModifiable.ToString(), ListeValeurs);
     
                    CréationDeLaConfig.Enregistrer();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
     
     
     
    }

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Plus ou moins

    J'ai l'impression que tu tentes de mettre à jour ton Label avec une nouvelle instance de MainForm, c'est pour ça que tu ne vois pas de changement. Si tu regardes ton fichier Program.cs tu verras que c'est là qu'est instancié le MainForm qui est affiché à l'écran. Si c'est bien ça, ce que tu peux faire c'est ne pas instancier le Form dans cette classe, et avant de faire appel à ses fonctions tu lui passes une références vers la bonne instance du MainForm que tu associes à cette variable membre.

    NB : tous les membres et les méthodes sont static, pourquoi ne pas mettre ta classe static ?
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Pour être honnête je connais pas vraiment les différences entre Partial Static, etc..

    Merci pour ta solution, cependant je ne comprends pas comment l'appliquer en pratique

    ET pour les MessageBox, pourquoi celle-ci me retourne elle le bon texte ? (premier poste)

  6. #6
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par steve15 Voir le message
    Pour être honnête je connais pas vraiment les différences entre Partial Static, etc..
    partial : signifie que la définition de ta classe est en plusieurs parties , c'est notamment ce qui permet à Visual Studio de te générer des Form avec la partie graphique dans un fichier à part (x.designer.cs).
    static : signifie que ta classe ne contient que des membres static, elle ne peut pas être instanciée. On accède aux méthodes et membres directement avec le nom de la classe.

    Citation Envoyé par steve15 Voir le message
    Merci pour ta solution, cependant je ne comprends pas comment l'appliquer en pratique
    Il faudrait voir comment tu te sers de cette classe dans ton code principal pour que je t'en dise plus.

    Citation Envoyé par steve15 Voir le message
    ET pour les MessageBox, pourquoi celle-ci me retourne elle le bon texte ? (premier poste)
    ... en même temps la Text de ton Label tu le remplis juste au-dessus, c'est un peu normal qu'il ait la bonne valeur dans ta MessageBox
    Par contre c'est le Label de ta nouvelle instance de MainForm, pas de celle qui est affichée.
    Plus je connais de langages, plus j'aime le C.

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Ok ça va être un peu compliqué pour tout envoyer..

  8. #8
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Vu que ta classe n'est pas static, montre moi juste la fonction où tu l'instancies
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/02/2012, 14h19
  2. [NetBeans] Générer le fichier .form depuis .class
    Par guitalca dans le forum NetBeans
    Réponses: 3
    Dernier message: 15/04/2008, 15h22
  3. Réponses: 4
    Dernier message: 18/01/2006, 11h21
  4. Réponses: 9
    Dernier message: 19/12/2005, 15h53
  5. Réponses: 4
    Dernier message: 01/10/2005, 17h59

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