Zugriff von Form2 auf Form1

28/10/2007 - 11:46 von Michael | Report spam
Hallo,

ich habe in einem Projekt zwei Formulare(Form1, Form2) und möchte von Form2
aus auf Form1 zugreifen.
Beispiel:
form1.label1.Text = "Hase";
möchte ich von Form2 aus schreiben können.
Alles Probieren brachte bisher kein Ergebnis.
Ist dies überhaupt möglich? Wenn ja:
Wie müssen die Zugriffsmodifizierer für die Klasse "Form1" und für das Label
"label1" lauten, damit label1 aus form1 in Form2 sichtbar wird?
Laut C#-Referenz soll dies der Zugriffsmodifizierer "internal" auf
Assembly-Ebene bewirken - tut er aber nicht.

Danke, Michael


Lieber zu spàt als gar nicht!
 

Lesen sie die antworten

#1 Lars-Iver Kruse
28/10/2007 - 12:55 | Warnen spam
Hallo Michael,

Michael schrieb:

ich habe in einem Projekt zwei Formulare(Form1, Form2) und möchte von
Form2
aus auf Form1 zugreifen.
Beispiel:
form1.label1.Text = "Hase";
möchte ich von Form2 aus schreiben können.
Alles Probieren brachte bisher kein Ergebnis.
Ist dies überhaupt möglich? Wenn ja:
Wie müssen die Zugriffsmodifizierer für die Klasse "Form1" und für das
Label
"label1" lauten, damit label1 aus form1 in Form2 sichtbar wird?
Laut C#-Referenz soll dies der Zugriffsmodifizierer "internal" auf
Assembly-Ebene bewirken - tut er aber nicht.



ich kenne die Rahmenbedingungen Deiner Applikation (Anzahl Forms einer
Klasse etc.) nicht, daher ein ganz einfaches Beispiel.

Ich gehe darin vereinfachend davon aus, daß Form1 das erste Formular Deiner
App ist und nur einmal geöffnet wird.

Insofern definiere ich in der Klasse (bei mir "TRMSMain") eine Variable:

static internal TRMSMain MainForm;

Dieser weise ich im Konstruktur dann die aktuelle Form zu:

MainForm = this;

[Achtung: Somit funktioniert das Beispiel nur für ein Form, existieren
mehrere Deiner Klasse, mußt Du das anders verwalten.]

In einer anderen Klasse in der selben Assembly kannst Du jetzt z.B. nach
einem Klick auf einen Button folgendes machen:

private void button1_Click(object sender, EventArgs e)
{
TRMSMain.MainForm.Text = "blabla";
TRMSMain.MainForm.Controls["button1"].Text = "blabla";
}

Die erste Zeile àndert den Titel Deines Form1, die zweite die Beschriftung
eines sich darauf befindenden Buttons.

Wie gesagt: Das Beispiel ist rudimentàr und nicht elegant, die Idee des
Zugriffs sollte es Dir aber verdeutlichen.


Viele Grüße, Lars


lik consulting
http://www.lik.de

Ähnliche fragen