Autor Beitrag
Script1996
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 30.12.13 23:27 
Hey zusammen,

ich bekomme es einfach nicht hin, den Text aus Form2 von der Textbox1 zu der Textbox1 in der Form2 zu übergeben.

Wenn ich den "Form1 frm1 = new Form1();" - Code benutze, geht ein neues Fenster der Form1 auf. Das will ich aber nicht..

Wie kann ich den Wert von Form2 der textbox aus Form1 übergeben?
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 31.12.13 00:54 
Irgendwie schreibst du wirr ... :D


Das funktioniert nur, wenn die Ausgangs-Form die Ziel-Form kennt.

Je nachdem, was das für ein Anwendungsfall ist, gibt es verschiedene mehr oder weniger sinnvolle Wege.
Hast du z.B. in der Form irgendwelche Auswahlmöglichkeiten, dann würde ich in der selben Form eine Eigenschaft anlegen, die die aktuell ausgewählte Option nach außen hin preis gibt.
Die Form, die das nun wissen möchte, muss das Objekt deiner Auswahl-Form natürlich kennen und das sollte auch nicht weiter schwer sein, weil du die einfach als globales Feld ablegst - in der Form selber und private natürlich.

Wenn du dann die Auswahl haben möchtest, nimmst du dieses Feld, wo die Auswahl-Form drin liegt und guckst nach, was in der vorher angelegten Auswahl-Eigenschaft steht.



Vielleicht solltest du auch nochmal überlegen, was genau eine Form ist.
Eine Form ist nämlich nichts anderes, als eine ganz normale Klasse, die über die Form-Basis-Klasse eine reihe Render-Fähigkeiten mit gegeben bekommt und so dargestellt werden kann - einfach ausgedrückt, korrigiert mich, wenn ich was durcheinander haue.
Auf jeden Fall erstellst du mit "new Form1();" ein Object dieser Klasse wie jedes Andere auch und dieses Objekt ist für sich eigenständig funktionsfähig und hat nix mit den anderen Objekten dieser Klasse zu tun (Außer natürlich die Klasse), wenn du das nicht selber direkt fest legst.
Du kannst zwischen zwei Fenstern also genauso kommunizieren wie zwischen jedem anderen Objekt auch.
Es ist daher nicht wunderlich, dass du ein neues Fenster bekommst und das Vorherige unangetastet bleibt.


Was mich mehr wundert, ist, dass die neue Form direkt angezeigt wird, sollte die nicht auf den Aufruf von "Show" oder "ShowDialog" warten? :gruebel:
Script1996 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 31.12.13 01:32 
Hehe ja das kann sein sorry :)

.. Also ich habe jetzt verstanden, dass das logisch ist, wenn eine neue Form1 aufgeht wenn ich

ausblenden C#-Quelltext
1:
2:
3:
Form1 frm1 = new Form1();
frm1.Show();
frm1.textBox1.Text = script.Text;

schreibe. Nun ist der Text zwar von Form2 in Form1 gewandert, aber wie gesagt in einem neuen Fenster.

Was kann ich anstelle von "new Form1()" schreiben, damit das aktuelle geöffnete Fenster von Form1 gewählt wird ?

Ich hoffe das ist nun verständlicher :D

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 31.12.13 01:56 
Genau, wie ich geschrieben habe :P

Aber ich glaub, ich kapier grad, wo dein Problem liegt ^^


Du hast gar kein Objekt der Form1 so zu Verfügung, weil es die Form ist, mit der die Anwendung startet?
Du hast sehr wohl ein solches Objekt, das wird allerdings nur in der Main-Methode angelegt und nicht weiter abgespeichert und das ist auch nicht nötig.

Schließlich geht alles von diesem einen "Haupt-Fenster" aus. Es geht auch Anders und es gibt bestimmt auch genug Fälle, wo Anders sinnvoll ist, aber ich gehe mal davon aus, dass das bei dir zutrifft.
Du betrachtest dein "Haupt-Fenster" also als "Besitzer" der anderen Fenster, die im Nachhinein geöffnet werden, weil dieses "Haupt-Fenster" jedes neue Fenster für sich als Objekt hinterlegt hat. Und wie das in einer schönen Monarchie ist, gibt der Herrscher die Befehle.
Du sagst also der Form, wo du die Infos her haben willst, sie soll die doch mal bitte raus rücken. Das machst du über eine Methode, oder über eine Eigenschaft. Beides gibt den gesuchten Wert zurück.
Es gibt noch andere Wege, je nach Anwendungszweck, aber ich denke, so ist es am einfachsten.

Für diesen Beitrag haben gedankt: Script1996
Script1996 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 31.12.13 02:12 
E: Vielen Dank ich habs nun herrausgefunden! :)

das gute get & set :)
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 31.12.13 23:27 
Auch unter dem Namen Property bekannt :P

get und set sind nur die Accessoren einer Property.
Denen kannst du auch Zugriffsmodifizierer verpassen, oder eins von Beidem weg lassen.

Für diesen Beitrag haben gedankt: Script1996