Partage
  • Partager sur Facebook
  • Partager sur Twitter

Transmettre variable de Form2 à Form1

    23 avril 2011 à 15:36:59

    Bonjour,

    Je débute en c# et la je rencontre depuis quelques jours des difficultés à passer des variables d'un Form à l'autre.

    Je m'explique:

    J'ai sur ma fenêtre principal (Form1) un lien menant à Form2 qui s'ouvre avec avec le code suivant :

    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        // Crée un nouveau Form
        Form2 myForm = new Form2();
    
        // Et l'ouvre
        myForm.ShowDialog();
                
    }
    


    Sur cette nouvelle fenêtre on trouve un "RichTextBox" et un bouton "Ajouter".
    Je souhaiterais donc que l'utilisateur l'utilise pour entrer du texte et que lorsqu'il clique sur "Ajouter" je récupère la valeur dans Form1

    Voici le code de Form2

    namespace WindowsFormsApplication1
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    
    
            private void btAjouter_Click(object sender, EventArgs e)
            {         
                // La chaine de destinataires
                string textUsers = rtbDestinataires.Text;
    
                // On défini le caractères de séparation
                char[] separateur = new Char[] { ',' }; // La virgule !
    
                // On découpe et on met sous forme d'un tableau
                string[] tbUsers = textUsers.Split(separateur, 100);
    
                
    
                this.Close();
            }
    
        }
    }
    



    Mais je n'y suis pas arrivé et les infos que j'ai trouvées sur Internet étaient de parcelles de code que je n'arrivais pas à adapter...

    Merci d'avance pour votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      26 avril 2011 à 11:19:59

      Quelque chose dans ce genre devrait t'aider !

      namespace WindowsFormsApplication1
      {
          public partial class Form2 : Form
          {
              public string[] tbUsers;
      
              public Form2()
              {
                  InitializeComponent();
              }
      
              private void btAjouter_Click(object sender, EventArgs e)
              {         
                  // La chaine de destinataires
                  string textUsers = rtbDestinataires.Text;
      
                  // On défini le caractères de séparation
                  char[] separateur = new Char[] { ',' }; // La virgule !
      
                  // On découpe et on met sous forme d'un tableau
                  tbUsers = textUsers.Split(separateur, 100);
      
                  this.DialogResult = DialogResult.OK;
                  this.Close();
              }
      
          }
      }
      


      private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
      {
          // Crée un nouveau Form
          Form2 myForm = new Form2();
      
          // Et l'ouvre
          myForm.ShowDialog();
          if (myForm.DialogResult == DialogResult.OK) {
              // on utilise myForm.tbUsers comme on veut
          }
          myForm.Dispose();
      }
      


      • Partager sur Facebook
      • Partager sur Twitter
        26 avril 2011 à 12:29:08

        Tu peux encapsuler mieux que ça la définition de Form2:
        - Form2 ne devrait pas exposer de variable publique (comme n'importe quelle classe);
        - Form1 n'a aucune raison de savoir que les données qui l'intéressent proviennent d'une textbox (ou d'autre chose).

        Donc plutôt que d'écrire
        public string[] tbUsers;
        
        écris plutôt
        public string[] UserNames { get; private set; }
        

        et ainsi, dans le code de Form2:
        this.UserNames = rtbDestinataires.Text.Split(new [] {','}, 100);
        

        :)
        • Partager sur Facebook
        • Partager sur Twitter

        Transmettre variable de Form2 à Form1

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown