Acceder aux propriétés des contrôles d'un autre Formulaire

Résolu
Claude Azoulai
Messages postés
26
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
13 avril 2013
- 4 avril 2013 à 16:08
Whismeril
Messages postés
17333
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
- 8 oct. 2017 à 00:33
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
A voir également:

9 réponses

Whismeril
Messages postés
17333
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
596
6 avril 2013 à 11:20
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
3
yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
6 avril 2013 à 15:30
Re,

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

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


bye...
3
Whismeril
Messages postés
17333
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
596
4 avril 2013 à 19:18
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
0
yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
5 avril 2013 à 17:46
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

6 avril 2013 à 10:19
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
0
Whismeril
Messages postés
17333
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
596
6 avril 2013 à 10:55
Bonjour, tu as bien mis
public void ChangeText(string txt)
{
    textBox1.Text = txt;
}

dans le formulaire ou tu veux changer le texte?


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

6 avril 2013 à 11:11
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
0
Claude Azoulai
Messages postés
26
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
13 avril 2013

6 avril 2013 à 15:33
[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
0
Bonsoir,

sujet un peu ancien, mais quelle était la solution ?
j'ai le même problème.
Merci
0
Whismeril
Messages postés
17333
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
596
8 oct. 2017 à 00:33
0