Acceder aux propriétés des contrôles d'un autre Formulaire [Résolu]

Signaler
Messages postés
26
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
13 avril 2013
-
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
-
Claude l'ancien

Bonjour
Je suis (très) débutant en C# avec Visual C#.
J'ai, pour l'instant développé des petites applications ne contenant qu'un seul Formulaire.
Actuellement j'ai besoin d'une appli avec deux Formulaires.
Mon problème :
Depuis le formulaire1, agir sur les propriétés d'un contrôle contenu dans le Formulaire2 qui est ouvert.

  
public Form frm;
   ......
   ......
        private void button3_Click(object sender, EventArgs e)
 {
   Form frm = new Form2();
   frm.Show();
   frm.BackColor = Color.Aqua;
   //frm.textBox1.Text = "Un Texte";
  }

Form2 s'ouvre bien, mais textBox1 est inaccessible et provoque une erreur
Note : dans Form2, j'ai mis la propriété "Modifier" de textBox1à Public mais ça marche pas.
Qu'est-ce que j'ai oublié ?
Merci de votre aide

9 réponses

Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
haha
Form frm = new Form2();


c'est pas bon, tu déclares frm en tant que Form, et non pas en tant que Form2, il faut faire ça

Form2 frm = new Form2();



Whismeril
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
Re,

ou alors si tu veux garder Form comme type de base, tu feras :

Form frm = new Form2();
(frm as Form2).ChangeTexte("Toto");


bye...
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
Bonsoir, si tu veux juste afficher "Un Texte" dans le textbox, je pense que le plus sioux est de le passer en paramètre à Form2 et dans le constructeur de form2 accéder à textbox

Voir cette discussion


Whismeril
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
Salut,

tu peux passer par une fonction publique

// Dans form2
public void ChangeText(string txt)
{
    textBox1.Text = txt;
}

// Dans une autre form
{
  Form frm = new Form2();
  frm.Show();
  frm.ChangeTexte("toto");
}


bye...
Messages postés
26
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
13 avril 2013

Merci à yann_lo_san
Quand j'ai lu ton message, je me suis dit qu'enfin j'avait une réponse que je comprenais parfaitement et j'étais sur que ça allait marcher.
Eh bien non !!!
J'ai l'erreur suivante :
-----------------------------------------
'System.Windows.Forms.Form' ne contient pas une définition pour 'ChangeTexte' et aucune méthode d'extension 'ChangeTexte' acceptant un premier argument de type 'System.Windows.Forms.Form' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?)
------------------------------------------
qui pointe sur frm.ChangeTexte("toto");

Voici les directives using que j'utilise :
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
Cela devrait pourtant fonctionner, je suis consterné
Claude l'ancien
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
Bonjour, tu as bien mis
public void ChangeText(string txt)
{
    textBox1.Text = txt;
}

dans le formulaire ou tu veux changer le texte?


Whismeril
Messages postés
26
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
13 avril 2013

Aucun doute
L'appel est dans Form1, textBox1 est dans Form2 et voici Form2.cs
namespace Anniversaires
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        private void Form2_Load(object sender, EventArgs e)
        {

        }
        public void ChangeTexte(string txt)
        {
            textBox1.Text = txt;
        }
    }
}


Voici l'appel dans Form1
        private void button3_Click(object sender, EventArgs e)
        {
            Form frm = new Form2();
            frm.Show();
            frm.BackColor = Color.Aqua;
            frm.ChangeTexte("Toto");
        }


Merci de vous occuper de moi
Claude l'ancien
Messages postés
26
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
13 avril 2013

[b]
M E R C I à toi
/b

Cela ne tenait pas à grand chose, mais en programmation ça ne pardonne pas.
Je vais pouvoir continuer dans la découverte du C#

Claude l'ancien
Bonsoir,

sujet un peu ancien, mais quelle était la solution ?
j'ai le même problème.
Merci
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545