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...).
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
}
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 ...
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";