C# Form2 öffnen und Form1 schliessen

  • C#

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    C# Form2 öffnen und Form1 schliessen

    Moin,

    Was mache ich da falsch ;(

    Form1:

    C#-Quellcode

    1. private void CmdLogin_Click(object sender, EventArgs e)
    2. {
    3. FrmUebersicht Dashboard = new FrmUebersicht();
    4. Dashboard.Login = this;
    5. Dashboard.Show();
    6. }


    Form2:

    C#-Quellcode

    1. namespace LVS
    2. {
    3. public partial class FrmUebersicht : Form
    4. {
    5. public FrmLogin Login { get; set; }
    6. public FrmUebersicht()
    7. {
    8. InitializeComponent();
    9. }
    10. private void FrmUebersicht_Load(object sender, EventArgs e)
    11. {
    12. Login.Close();
    13. }
    14. }
    15. }

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „newsletter“ ()

    1. Könntest Du Dir das mit dem In-Form2-Form1-schließen sparen, indem Du bei der gezeigten Konstellation einfach nach DashBoard.Show(); noch this.Close(); schreibst.
    2. Dashboard ist ein Teil von FrmLogin. FrmLogin wird abgeschossen. Also wird dann auch Dashboard vernichtet. Das ist die Antwort auf Deine nichtgestellte Frage: "Warum schließt sich alles? Ich will doch nur, dass sich FrmLogin schließt und die Kontrolle an FrmUebersicht abgibt." Sinnvoller wäre es andersrum: FrmUebersicht zeigen, FrmLogin als modalen Dialog drüberzulegen und dann aufgrund des Dialogergebnisses (oder eines anderen Kriteriums) zu entscheiden, ob und wie es weitergeht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @newsletter probierma

    VB.NET-Quellcode

    1. private void CmdLogin_Click(object sender, EventArgs e)
    2. {
    3. using(FrmUebersicht Dashboard = new FrmUebersicht())
    4. {
    5. this.Close();
    6. Dashboard.ShowDialog();
    7. }
    8. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    probierma

    scheitert - zumindest bei mir. Gleicher Spekulatius: Vernichtung des Besitzers.

    #####

    this.Close(); eine Zeile tiefer würde zwar klappen - klar. Aber dann würden beide Formulare angezeigt werden, bis der Dashboard-Dialog geschlossen wird. Allerdings hat der TE noch nicht gesagt, was er erreichen will. Von daher: Spekulatiusbox.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @VaporiZed Jou, die MainForm geht weg und damit alles andere.
    @newsletter Wie wäre es, wenn Du die 1. Form nur unsichtbar machst (getestet)?

    C#-Quellcode

    1. // Form1
    2. private void button1_Click(object sender, EventArgs e)
    3. {
    4. Form2 dlg = new Form2();
    5. dlg.Show();
    6. this.Hide();
    7. }

    C#-Quellcode

    1. // Form2
    2. private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    3. {
    4. Application.OpenForms[0].Show();
    5. }

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    newsletter schrieb:

    this.Hide(); wäre falsch
    Beschreib mal den Ablauf.
    Wie wäre es mit einem Splasc-Screen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn man die MainForm schließt, beendet man damit das Programm. Daher würde ich ein Login Fenster nicht als MainForm verwenden... Glaub man kann das umstellen, weiß aber nicht mehr wo, weil zu lange her als ich das machen musste. Ansonsten halt das Login Fenster per Hide verstecken, dat frisst ja nix.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @newsletter Oder Du tauschst einfach die Funktion / Aufrufreihenfolge der Dialoge:

    VB.NET-Quellcode

    1. Application.Run(new Form1); // hier die andere Form eintragen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!