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 :

Acceder a des elements d'un form de partout


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Acceder a des elements d'un form de partout
    bonjour

    je bloque sur un truc qui doit etre tout simple mais j'ai beau lire des messages partout je ne m'en sors pas

    j'ai un form tout simple avec juste un label 1

    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
    private void InitializeComponent()
            {
                this.label1 = new System.Windows.Forms.Label();
                this.SuspendLayout();
                // 
                // label1
                // 
                this.label1.AutoSize = true;
                this.label1.Location = new System.Drawing.Point(114, 131);
                this.label1.Name = "label1";
                this.label1.Size = new System.Drawing.Size(35, 13);
                this.label1.TabIndex = 0;
                this.label1.Text = "label1";
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(284, 262);
                this.Controls.Add(this.label1);
                this.Name = "Form1";
                this.Text = "Form1";
                this.ResumeLayout(false);
                this.PerformLayout();
     
            }
     
            #endregion
     
            private System.Windows.Forms.Label label1;
    si je veux modifier le texte du label je peux faire un label1.Text = "blabla" mais ca ne fonctionne que dans cette class (dans le fichier Form1.cs) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    namespace WindowsFormsApplication4
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                label1.Text = "test";
            }
        }
    }
    d'ou ma question comment atteindre label1 a partir d'autres class ?
    par exemple ici dans le fichier Program.cs

    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
        static class Program
        {
            /// <summary>
            /// Point d'entrée principal de l'application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
     
                // label1.Text = "toto";
     
            }
        }

    merci d'avance

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    il faut avoir une référence sur le form
    vu qu'il est possible d'avoir plusieurs fois le meme form affiché en meme temps, il est logique de ne pas pouvoir modifier le label1 depuis n'importe où sans préciser quelle instance du form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Form1 f = new Form1();
    Application.Run(f);
    f.label1.Text = "toto";
    il faut aussi que le label soit déclaré public au lieu de private

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    une form doit afficher les informations issus d'un document.

    Chaque form doit accéder à ce document. Si le document est mise à jour, la forme met à jour le controle qui représente la source de l'information.

    Donc, Les forms n'ont pas besoin de se connaitre entre elles.

    Si form1 veut modifier un "label" de form2, elle doit modifier le document que tout le monde connait et par "ricochet", la form2 se mettra à jour.

    Que les forms se connaissent est une chose "horrible" sauf dans le cas ou une form est fille d'une autre.. pourquoi, parce que le jour ou tu changes ton label par un autre controle, il faudra surement que tu ailles modifier tous les appels et modifications de ce label disséminés partout dans ton code

    Il faut penser modele "Document/View", ou MVC...

    Tu verras, tout vas soudainement s'éclairer

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    merci pour vos réponses


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

Discussions similaires

  1. [2.x] [Symfony2] Form imbriqué avec proposition des elements déjà existant
    Par Elwood J. Blues dans le forum Symfony
    Réponses: 0
    Dernier message: 04/10/2011, 17h49
  2. Acceder a des points de contours d'une forme dessinee?
    Par pgerard dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 03/04/2010, 08h22
  3. acceder au contenu des elements fils
    Par helpcomm dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/03/2010, 10h21
  4. Acceder à des element de la page.
    Par Halobox dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/03/2007, 17h05
  5. pb d'adresse des elements dans un form
    Par arnolpourri dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/07/2006, 13h51

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