2010-01-16 7 views
1

J'ai une application qui a 2 formes. Lorsque je clique sur un bouton sur le formulaire 2 Je veux être en mesure de modifier le texte dans form1:C# Utilisation de plusieurs formulaires

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Form1.label1.Text = "Fred"; 
    } 
} 

Le compilateur génère une erreur

Comment puis-je faire?

Répondre

8

Vous confondez les formulaires et les instances de formulaire. Un formulaire est juste une classe. Lorsque Form1 s'affiche, ce qui affiche est une instance de la classe Form1. Lorsque Form2 s'affiche, une instance de Form2 s'affiche.

Vous essayez d'utiliser

Form1.label1.Text = "Fred"; 

Mais vous ne pouvez définir un champ ou un membre d'une instance . Vous faites référence à la classe "Form1".

Vous avez besoin de deux choses. Je vais supposer que Form2 est lancé à partir d'un bouton sur Form1. Ajouter un constructeur à Form2 qui accepte une instance de Form1:

private Form1 _starter; 
public Form2(Form1 starter) : this() 
{ 
    _starter = starter; 
} 

Puis ajouter une propriété à Form1 qui expose le texte de l'étiquette: ne pas exposer directement les contrôles - seulement une forme donnée doit savoir ce que les contrôles sont là-dessus:

public string LabelText 
{ 
    get {return label1.Text;} 
    set {label1.Text = value;} 
} 

Ensuite ont Form2 définissez cette propriété:

private void button1_Click(object sender, EventArgs e) 
{ 
    _starter.LabelText = "Fred"; 
} 
+0

Merci pour votre réponse. Tout fonctionne bien maintenant :) – Greycrow

3

Vous lancez probablement une instance de Form2 d'une instance de Form1, comme celui-ci:

Form2 f2 = new Form2(); 
f2.Show(); 

Si tel est le cas, vous pouvez modifier le texte dans l'instance f2 de Form2 comme ceci:

f2.label1.Text = "new text"; 

Notez que vous aurez besoin de faire label1 un champ public (pas une bonne pratique) ou encapsuler en utilisant une propriété. J'espère que cela t'aides.

Questions connexes