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 :

Transmettre variable de Form2 à Form1


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Par défaut Transmettre variable de Form2 à Form1
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    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 (tbUsers ) dans Form1

    Voici le code de Form2 :

    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
     
    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();
            }
     
        }
    }
    J'ai essayé la réponse ci-dessous et je suis arrivé à afficher dans une nouvelle fenêtre de Form1 le text dans un textBox... Mais je n'arrive pas à adapter pour en faire ce que je souhaite...

    Citation Envoyé par bobmidou Voir le message
    salut,

    Si j'ai bien compris tu veux par exemple transferer une valeur d'un champs se trouvant dans un Form1 vers une valeur d''un autre champs se trouvant dans un Form2
    Alors tu fais:
    si Form1(textBox1) et Form2(TextBox2) ------> résultat Textboxe2 = valeur(TextBox1)
    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
     
    // tu définis une fonction dans Form2 
     
    public void  setTexte(string texte)
    {
    	this.TextBox2.Text = texte;
    }
     
    // Tu écris la fonction du bouton qui fait le transfert dans la From1
     
    private void button1_Click(object sender, System.EventArgs e)
    {
    	Form2 frm2 = new Form2();
    	frm2.settxt2(this.TextBox1.Text); // tu peux vérifier si TextBox1 est non vide si tu veux
    	frm2.ShowDialog();
    	frm2.Dispose();
     
    }
    J'espère que c'est ça que tu veux si oui tu peux faire pour n'importe quelle variable mais en passant par des fonctions membres public sera mieux.

    Bonne chance
    Merci d'avance pour aide...

  2. #2
    Membre très actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Par défaut
    il y a plusieurs manières de faire, mais je pense que le plus simple à faire, c'est que Form2 ait connaissance de Form1 et que par exemple Form1 expose une méthode pour ajouter des "users", pour faire ça il faut que Form2 ait un attribut de type Form1 et quand tu instancies Form2 tu lui passe Form1 dans le constructeur :
    Code c# : 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
     
    //dans Form2
    Form1 form1
    public Form2(Form1 form1){
      this.form1 = form1;
    }
     
    //dans Form1, méthode du click
    Form2 myForm = new Form2(this);
    myForm.ShowDialog();
     
    //dans Form1,
    public void ajouterUsers(string[] users){
      //tu fais tes traitements dans Form1 lui ayant passé des données de Form2
    }
     
    //dans Form2, méthode du click "ajouter"
    //tu récupères tes données comme tu as fait
    this.form1.ajouterUsers(tbUsers);

    en gros c'est comme ça que tu peux faire simplement

  3. #3
    Membre expérimenté
    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 : 47
    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
    Par défaut
    Pas besoin que les Form se connaissent, ce serait plutôt à éviter.

    Comme Form2 est affichée en ShowDialog depuis Form1, le plus simple consiste à ajouter une propriété sur Form2 pour récupérer l'information saisie par l'utilisateur. De la même façon que l'on récupère un dossier avec un FolderBrowserDialog et que l'on obtient un fichier pour l'enregister avec SaveFileDialog

    Donc sur Form2 tu ajoutes la propriété

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string[] TbUsers { get; }

    et pour l'initialiser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void btAjouter_Click(object sender, EventArgs e)
    {         
        // On découpe et on met sous forme d'un tableau
        this.TbUsers = rtbDestinataires.Text.Split(new char[] { ',' }, 100);
     
        this.Close();
    }
    Ensuite dans Form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    using (Form2 frm2 = new Form2())
    {
        frm2.settxt2(this.TextBox1.Text);    
        frm2.ShowDialog();
        // Ici on utilise frm2.TbUsers pour récupérer l'info    
    }
    Le bloc using appelle automatiquement la méthode Dispose, même si une exception est levée, c'est donc à privilégier

    Si besoin, il faudra que tu spécifies le DialogResult sur Form2 (si tu as plusieurs boutons Ajouter, Annuler...) afin de pouvoir tester ce que l'utilisateur à fait lorsque tu reprends la main après l'appel à ShowDialog.

Discussions similaires

  1. Transmettre variable si elle est visible
    Par Lenezir dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/03/2008, 23h31
  2. Transmettre variable à un script PHP
    Par jeremy13 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 08/02/2008, 22h23
  3. [JS->PHP] transmettre variable
    Par WagaSeb dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/05/2007, 10h48
  4. Transmettre variable href
    Par tulipe44 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/03/2007, 11h57
  5. Transmettre variable de powerpoint à word
    Par vince73_2 dans le forum VBA Word
    Réponses: 1
    Dernier message: 27/01/2007, 09h32

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