Autor Beitrag
tomycat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: Di 27.10.15 22:44 
hallo,
ich habe eine "Windows Form" hinzugefügt. Im Hauptfenster wird Sie über....

ausblenden Quelltext
1:
2:
 Form Sonderfenster = new Form2();
 Sonderfenster.Show(this);


... geöffnet. Jetzt möchte ich dass das Hauptfenster gesperrt bleibt, bis ich das Sonderfenster schliesse.

2.Problem:

Mit close wird das Fenster geschlossen, aber ich möchte die Variable xy an das Hauptfenster übergeben, wie mache ich das?


Moderiert von user profile iconTh69: Topic aus Sonstiges (.NET) verschoben am Mi 28.10.2015 um 08:52
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mi 28.10.15 07:47 
Hallo :)

Auf der Sonderform gibst du die Variablen so an: public static string x oder public static int y. Das Sonderfenster musst du so öffnen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
SonderFenster SF = new SonderFenster ();
SF.ShowDialog ();

if (FE.x != null)
{

}

Und wie man der Form1 sagt, ob das Fenster geschlossen wird, wird durch die Methode ShowDialog ();übernommen. Was die Form dann machen soll, schreibst du unter dieser eben genannten Methode.

Für diesen Beitrag haben gedankt: tomycat
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 28.10.15 12:39 
a.) Da du die SonderForm Variable als Form definierst und nicht als Form2 wirst du im folgenden Code nicht auf Spezifika von Form2 zugreifen können außer du castest die Variable wieder auf den Form2 typen. Definiere es lieber gleich als Form2. Gute Namen sind übrigens kein reiner Zierrat die sind hilfreich und die Typbezeichnung Form2 einfach Mist.
b.) Wie bereits erwähnt möchtest du scheinbar eine modale Form (den Rest der Anwendung sperren solange diese Form angezeigt wird). Dazu benutz man ShowModal anstatt Show.
c.) Nach Sonderfenster.ShowModal bist du wieder im Code deines Hauptfenster. Der Gedanke "ich möchte die Variable xy an das Hauptfenster übergeben, wie mache ich das?" ist also eher falsch rum. Du solltest die Information vom Hauptfenster aus der Form2 Instanz holen lassen. Anders herum müsste Form2 auch das Hauptfenster kennen was eher unglücklich wäre. Du musst Form2 einfach die passende Oberfläche in Form einer Methode, Property, Variablen geben an die sich das Hauptfenster wenden kann um an die benötigten Daten zu kommen.

@Csharp-programmierer : Es gibt keinerlei Grund die Felder oder Properties x,y von Form2 statisch zu machen. Mit annähernd 100% Wahrscheinlichkeit ist es immer falsch Dinge zum Datenaustausch statisch zu machen. Nach ShowDialog kann man einfach weiterhin auf die konkrete Form zugreifen man hat ja zum Aufruf von ShowDialog voraussichtlich eine Variable benutzt (bei dir SF) die kann man einfach weiterverwenden.

Für diesen Beitrag haben gedankt: tomycat