C# | Form2 schließt, sobald aus diesem Form1 geöffnet wird! HILFE

dan13l

Grünschnabel
Hey Leute,

ich bin Informtik Student, und neu im Programmieren.
Ich bereite mich auf kommende Vorlesungen vor, und brauch von euch Fach-Hilfe.
Mein Ziel ist es:
Form2 wird unter bestimmten Bedingungen ein Objekt des Form1 erzeugen und auch anzeigen, jedoch soll direkt mit öffnen des Form1 das Form2 geschlossen werden.
Also... nicht die application schließen, sondern nur Form2. Wie geht das?
Der relevante bisheriger Code:

public void btn_login_Click(object sender, EventArgs e)
{
string l = "";
string name;
string vorname = "";
string s = "";

Regex myRegex = new Regex("^[A-Za-z]*$");
bool bedinungsWahr = myRegex.IsMatch(tb_loginname.Text);

if (bedinungsWahr == true) // wenn Vorname korrekt....
{
name = Convert.ToString(tb_password.Text);
Regex myRegex1 = new Regex("geil");
bool pwWahr = myRegex1.IsMatch(name);

if (pwWahr == true) // wenn Password korrekt
{
Form1 f1 = new Form1();
f1.logname = this.tb_loginname.Text;

f1.Show();

USW.....

Nun, ich will keine Hilfe vorerst für anderen Code, das Programm läuft korrekt und fehlerfrei!
Alternative zu eurer hilfe:

1. Das Form 1 wird in dem Form2 geladen... <---- Ist dies überhaupt möglich? Falls ja.... wie?
2. Form1 schließt, sobald Form2 öffnet, also direkt nachdem f1.Show(); ausgeführt wird.

Vielen Dank im voraus. Sollte das mal laufen... hätte ich noch andere allgemeine Fragen bzgl. C#....
Wünsch euch noch ein paar sonnige Tage.

Herzliche Grüße
dan13l
 
Hallo,

zu 1) Du kannst mit Form2 starten.
Hierzu die Program.cs öffnen.

C#:
Application.Run(new Form1()); -> Application.Run(new Form2());

Danach einfach Form1 in der Form2 instanzieren und anzeigen.
 
zu CHTMLVBFELI:
nein, this.close(); schließt die Application, nicht das einzelne Form!
Ergo wird auch das aufgerufene f1 Object geschlossen.

ABER.....

Also wo fange ich am besten an....
Wenn ich mein Form1 in meinem Programm.cs bekannt gebe... startet er es mir "IMMER", aber... wenn ich es mache, und führe dein Befehl aus, funktioniert dies, ergibt aber keinen sinn in meiner Anwendung...
Aber ich habe verstanden wie der Befehl funktioniert bzw. Anzuwenden ist. Also Danke auch dafür.

Keine optimale lösung für mich... aber verstanden was da abgeht.. :-)
 
Zuletzt bearbeitet:
@Turri:

Vielen Dank für Deine Hilfe..... funktioniert nun... wenn ich mal genau drüber nachdenke, auch sehr logisch :-D!


Für alle die, die über die SUFU hierauf kommen, und eine Erklärung dazu noch brauchen:

Mein Program.cs hatte vorher auch
"Application.Run(new Form2()); //und
Application.Run(new Form1()); "

stehen, dabei öffnet er beide Forms hintereinander.....
ABER:
Wenn ich nun aber Form1 als Object in Form2 anlegen und öffne, läd er mir dieses Form1 innerhalb meines Form2.

Herzliche Grüße
dan13l
 
Hey Leute,

so, nun wird es ein gutes stück schwerer:
Folgendes:
Also... Aus vorherigen Beiträgen funktioniert es, dass mein Form1 IN Form2 angezeigt wird, bzw. das quasi parallel abläuft. Ich muss dennoch Form2 löschen.

Code:
f1.Show();
this.close();

So.... nun ist es jedoch so... ich übergebe VON Form2 ZU Form1 einen String... Wenn ich es mit bisherigem Code, also mit dem this.close(); mache, obwohl ich dass in Form2 schreibe <-- was er ja machen soll... übergibt er dem Form1 den String nicht.
Ich habe mir das erklärt wie folgt:
Form1 bekommt die Attribute nur... wenn Form2 immernoch als referenz besteht, ergo... das Form, aus der der Wert kommt, nicht geschlossen wird******

Ich habe es auch schon mit hide() versucht.... aber er macht das leider nicht!

Herzliche Grüße
dan13l


Ich hab es jetzt mal auf this.Visible = false; stehen....
Das funktioniert schon... gibt es noch besseres?
 
Zuletzt bearbeitet:
Zurück