Autor Beitrag
mk0
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 24.01.08 05:55 
Guten Morgen zusammen,
ich habe hier schon die Suche bemüht und bin auf www.c-sharp-forum.de...ighlight=form1+form2 diesen Thread gestoßen der mir bei meinem einem Problem auch super geholfen hat (wenn man die eine Form schließt und die Variable dann in der anderen nutzt ist das alles kein Problem).
Ich habe nun aber noch ein Problem und zwar:
Soll Form1 immer offen bleiben aber bei einer Eingabe in Form 1 öffnet sich eine neue Form (Form 3 in diesem Fall). Ich möchte nun eine Variable aus Form1 in Form 3 nutzen. Dazu habe ich schon einen Konstruktur erstellt nur weiß ich nicht wie ich eine Beziehung zur Form 1 herstelle
ausblenden C#-Quelltext
1:
2:
3:
4:
public int Clicks
{
   get { return clicks; }
}
(da diese ja weiter hin offen bleibt und nicht mit dem
if (form1.ShowDialog() == DialogResult.OK
überprüft werden soll).
Ich würde mich über eine Antwort von euch freuen.
Vielen Dank im voraus.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 24.01.08 09:04 
user profile iconmk0 hat folgendes geschrieben:
Soll Form1 immer offen bleiben aber bei einer Eingabe in Form 1 öffnet sich eine neue Form (Form 3 in diesem Fall).

Verstehe ich es richtig, dass Form1 das "Ausgangsformular" ist, z.B. das Hauptformular, und geöffnet bleibt?
user profile iconmk0 hat folgendes geschrieben:
Ich möchte nun eine Variable aus Form1 in Form 3 nutzen. Dazu habe ich schon einen Konstruktur erstellt nur weiß ich nicht wie ich eine Beziehung zur Form 1 herstelle

Überhaupt nicht, GANZ UND GAR NICHT! Das rufende Formular darf Zugriff auf das "abhängige" Formular haben, aber nicht umgekehrt! Es gibt allenfalls Situationen, in denen eine Ereignisroutine des rufenden Formulars dem abhängigen als EventHandler übergeben wird, sodass das abhängige Formular mit diesem Ereignis etwas im rufenden Formular machen kann.

Die Übergabe eines Wertes von Form1 an Form3 geht immer einfach, z.B. so:
ausblenden C#-Quelltext
1:
2:
3:
4:
Form3 newform = new Form3();
newform.Init(value);
//  oder direkt mit einem passenden Konstruktor, wie Du es wohl gemacht hast:
Form3 newform = new Form3(value);

Wenn das abhängige Formular per ShowDialog() geöffnet wird, geht das Lesen eines Wertes ebenfalls einfach:
ausblenden C#-Quelltext
1:
2:
3:
if (newform.ShowDialog() == DialogResult.OK) {
    value = newform.Clicks;
}

Wenn das abhängige Formular per Show() geöffnet wird, muss das Auslesen des Wertes über einen EventHandler gesteuert werden:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
newform.Init(myEventHandler);
//  MouseEventArgs habe ich genommen, weil es 2 int-Felder enthält;
//  besser ist eine eigene EventArgs-Ableitung
private void myEventHandler(object sender, MouseEventArgs e) {
    value = e.X;
}

Dabei muss myEventHandler im Form3 in einer lokalen Variablen registriert werden; die Methode zu dieser Variablen wird bei Bedarf aktiviert mit "e.X = Clicks".

Ich hoffe, ich kann etwas helfen. Jürgen
mk0
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 24.01.08 13:30 
Vielen Dank Jürgen,
hat super geklappt ;)