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 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 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

9 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
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 26
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 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
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 26
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 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
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 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
8 oct. 2017 à 00:33
0
Rejoignez-nous