Accéder à une textBox depuis une autre classe

Signaler
Messages postés
29
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
28 janvier 2004
-
Messages postés
14907
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 octobre 2020
-
Salut tout le monde :)
En fait, je veux rajouter une phrase à une textbox depuis une autre classe que Form1.
Si ma classe Test hérite de Form1, je peux en effet y avoir accès, mais visual studio me sort une exception StackOverFlow (ça concerne la pile apparemment...).

Comment y remédier ?
Merci infiniment !

Nico

5 réponses

Messages postés
29
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
28 janvier 2004
1
Non c'est bon, j'ai trouvé :)
Pour ceux que ça intéresse, j'accède avec ce code au champ Text d'une textBox à partir d'une autre classe (pas d'héritage) :

public class CTest
{
public Form1 MyParentForm; // pour accéder au log de Form1

public void Test()
{
((Form1)MyParentForm).logTextBox.Text = "test";
}
}

Dans la classe Form1 :

private CTest test= new CTest();
public Form1()
{
InitializeComponent();

test.MyParentForm = this; // pour que la classe CTest accède au textBox
}
Messages postés
7
Date d'inscription
mercredi 19 octobre 2011
Statut
Membre
Dernière intervention
9 mai 2012
2
vous devez mettre la propriété "Modifier" de ton composant TextBox à public



private void button1_Click(object sender, EventArgs e)
{

GetOtherFormTextBox();
}

public Form1 otherForm = new Form1();
private void GetOtherFormTextBox()
{
textBox1.Text = otherForm.mlTextBox1.Text;

}
Messages postés
14907
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 octobre 2020
446
Bonjour aminescm,
la question avait été posée en 2003, j'espère pour nicolson qu'il avait trouvé depuis.

Whismeril
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
13
tu pouvez tout simplement mettre la proprité "Modifier" de ton composant TextBox à public et d'une autre classe en passant la référence à ta classe Form1, tu ferais : <la reference>.textBox1.Text ...
Messages postés
2
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
7 novembre 2011

Pour les nerds un peu épais comme moi :
préciser que la classe Form1 doit comporter en plus la ligne
test.Test();


C'était sûrement évident ...

Ce qui nous donne le fichier complet (ne manque que le program.cs standard créé par VS2010)

using System;
using System.Windows.Forms;
namespace class_textboxexterne
{
public partial class Form1 : Form
{
private CTest test = new CTest();// on crée un objet
//test : il en faut au moins 1, sinon, aucun intérêt !
public Form1()
{//constructeur
InitializeComponent();
test.MyParentForm = this; // pour que la classe
//CTest accède au textBox
test.Test();// On lance la méthode test de
//l'objet test (classe CTest)
}

}//fin classe Form1

public class CTest
{

public Form1 MyParentForm; // pour accéder au log de Form1

public void truc()
{Test();
}
public void Test()
{
((Form1)MyParentForm).textBox1.Text = "test";

}// fin void Test
}// fin classe Ctest

}//fin namespace