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

Claude Azoulai 27 Messages postés mercredi 11 août 2004Date d'inscription 13 avril 2013 Dernière intervention - 4 avril 2013 à 16:08 - Dernière réponse : Whismeril 10564 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention
- 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
Afficher la suite 

10 réponses

Répondre au sujet
Whismeril 10564 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 6 avril 2013 à 11:20
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Whismeril
yann_lo_san 1137 Messages postés lundi 17 novembre 2003Date d'inscription 23 janvier 2016 Dernière intervention - 6 avril 2013 à 15:30
+3
Utile
Re,

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

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


bye...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de yann_lo_san
Whismeril 10564 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 4 avril 2013 à 19:18
0
Utile
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
Commenter la réponse de Whismeril
yann_lo_san 1137 Messages postés lundi 17 novembre 2003Date d'inscription 23 janvier 2016 Dernière intervention - 5 avril 2013 à 17:46
0
Utile
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...
Commenter la réponse de yann_lo_san
Claude Azoulai 27 Messages postés mercredi 11 août 2004Date d'inscription 13 avril 2013 Dernière intervention - 6 avril 2013 à 10:19
0
Utile
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
Commenter la réponse de Claude Azoulai
Whismeril 10564 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 6 avril 2013 à 10:55
0
Utile
Bonjour, tu as bien mis
public void ChangeText(string txt)
{
    textBox1.Text = txt;
}

dans le formulaire ou tu veux changer le texte?


Whismeril
Commenter la réponse de Whismeril
Claude Azoulai 27 Messages postés mercredi 11 août 2004Date d'inscription 13 avril 2013 Dernière intervention - 6 avril 2013 à 11:11
0
Utile
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
Commenter la réponse de Claude Azoulai
Claude Azoulai 27 Messages postés mercredi 11 août 2004Date d'inscription 13 avril 2013 Dernière intervention - 6 avril 2013 à 15:33
0
Utile
[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
Commenter la réponse de Claude Azoulai
0
Utile
1
Bonsoir,

sujet un peu ancien, mais quelle était la solution ?
j'ai le même problème.
Merci
Whismeril 10564 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 8 oct. 2017 à 00:33
Commenter la réponse de windo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.