Bonjour, je suis actuellement sur un projet C# et j'ai un petit problème.
J'ai en fait une Form(Form1.cs) contenant une textbox (textbox1) et une autre form(Form2.cs) avec également une textbox.
La textbox de la form1 contient du texte et j'aimerais que quand j'appuie sur un bouton de ma form2 que le texte de la form1 soit envoyé sur la textbox de la form2.
Sur ma Form2 j'ai fait ce code pour pouvoir accéder à la textbox de la form1 :
public partial class Form2 : Form
{
Form1 fm1;
public Form2()
{
InitializeComponent();
}
J'ai également rendu public la textbox de cette form1 dans la propriété "Modifiers".
J'ai fait ensuite ce code quand j'appuie sur le bouton de la form2
Mais lorsque je teste le fonctionnement, j'ai une erreur de type "L'exception NullReferenceException n'a pas été gérée".
J'ai également essayé la méthode
Form1....
le problème c'est qu'il n'y a pas "textbox" qui s'affiche.
Auriez-vous une idée pour faire passer le contenu de la textbox1.text de ma form1 vers la textbox de ma form2 lors d'une pression sur un bouton ?
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656 6 févr. 2013 à 21:01
C'est normal, dans une application tu peux afficher 15 (ou 100 ou ...) instances du même formulaire. Il y a donc autant d'instance du dit formulaire. Il faut donc savoir de quelle instance on parle, même s'il n'y en a qu'une.
public partial class Form2 : Form
{
Form1 fm1;//ici tu crées une variable qui est prête à recevoir un Form1
int i;// là je crée une variable qui est prête à recevoir un int
int j = 2;//là je crée une variable int qui vaut 2
public Form2()
{
L'idée est de passer à form2 la "référence" dont tu as besoin.
Mettre la textbox public n'est pas trop conseillé (je ne sais pas vraiment pourquoi), par contre tu peux la passer à form2.
public partial class Form2 : Form
{
string monTextBox;//je crée une variable accessible dans tout form2 prête à recevoir le text du textbox de form1
public Form2(string Text1)//là j'ajoute un paramètre au constructeur de Form2 comme pour une méthode
{
monTextBox = Text1;//là le paramètre est passé à ma variable locale
InitializeComponent();
}
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656 14 févr. 2013 à 13:18
Donc en fait il faut que je mette par exemple
Form1 fm1
et ensuite je met en dessous
string text1 = fm1.textbox1.text
?
Non soit je me suis mal exprimé soit tu n'as pas lu.
Dans ton instance de Form2
Form1 fm1;
cette ligne initie un espace mémoire (variable) qui peut contenir un Form1, mais pas l'instance existante dans ton programme tant que tu ne l'as pas clairement indiqué, pour ça il faut passer la référence (du formulaire, du textbox ou directement du string selon ton besoin) d'un form à l'autre come je te l'ai décrit;