Laden...

Form verstecken mit hide() lässt Form nicht verschwinden

Erstellt von ExilCoder vor 7 Jahren Letzter Beitrag vor 7 Jahren 4.539 Views
E
ExilCoder Themenstarter:in
28 Beiträge seit 2015
vor 7 Jahren
Form verstecken mit hide() lässt Form nicht verschwinden

Hallo Leute ich wollte grade etwas ganz simples machen, ich wollte 2 Formen haben die erste Form zum einstellen des Programms und die zweite zum ausführen.

Sollte so aussehen:

  1. Programm startet Form 2 und versteckt diese mit "this.hide();" zeigt dann die Form1
    und bei diesem extrem leichten Schritt klappt irgendwas nicht und ich bin echt ratlos ich denke ich habe alles richtig gemacht xD

hier der Code:

        private void Form2_Load(object sender, EventArgs e)
        {
            this.Hide();

            Form1 form = new Form1();
            form.Show();
        }

Ich wollte das die zweite Form zum Hauptfenster wird da ich will das der Benutzer das Programm auch über die obere Leiste beenden kann und ich das Template schon fertig gemacht habe und dachte der Schritt würde 10 Sekunden dauern ... aber ganz komisch 😮

im Program.cs hab ich das noch umgestellt:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Game_Problem_Fixer
{
    static class Program
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form2());
        }
    }
}

Ich bin neu hier, und deshalb etwas unerfahren wenn du hilfreiche Tipps bezüglich dem lernen von C# hast lass sie mich wissen !

P
441 Beiträge seit 2014
vor 7 Jahren

Was genau heißt denn "klappt irgendwas nicht" ?

E
ExilCoder Themenstarter:in
28 Beiträge seit 2015
vor 7 Jahren

Das die Form nicht verschwindet bzw das Hide nicht funktioniert, online steht das es überschrieben wird von einem Dialog der aufgerufen wird wenn eine Form erstellt wird aber ob das stimmt ka ... ich glaube früher ging das um einiges einfacher

Ich bin neu hier, und deshalb etwas unerfahren wenn du hilfreiche Tipps bezüglich dem lernen von C# hast lass sie mich wissen !

P
441 Beiträge seit 2014
vor 7 Jahren

Google sagt dazu (http://stackoverflow.com/questions/7003587/why-isnt-this-hide-working-in-form1-load-event), dass das Load Event zum tragen kommt, bevor das Form überhaupt angezeigt wird.

Wenn du es hier verstecken willst, wird das "anzeigen" später noch einmal getriggert und wird dein Verstecken überschreiben.

Musst du zwingend das Form hier schon erzeugen?
Reicht es nicht, dass später zu tun, wenn du es wirklich brauchst?

E
ExilCoder Themenstarter:in
28 Beiträge seit 2015
vor 7 Jahren

Ich müsste halt die Form die nicht als Start Form gilt oben per Leite (X Button) schließen können, kann man das im laufe des Programms irgendwie machen ?

Ich bin neu hier, und deshalb etwas unerfahren wenn du hilfreiche Tipps bezüglich dem lernen von C# hast lass sie mich wissen !

P
441 Beiträge seit 2014
vor 7 Jahren

WPF verwenden 😉

Es gibt verschiedene Möglichkeiten, das was mir auf Anhieb einfällt:

a) Das Programm fällt nach schließen der letzten Form zurück in die statische Main()
b) Das Schließen Event des Form abbonieren
c) Ein anderes Event zum verstecken nutzen (z.B. Show)

E
ExilCoder Themenstarter:in
28 Beiträge seit 2015
vor 7 Jahren

Was wäre die kürzeste Variante die keine Nebenwirkungen hat ? Oder keine großen

Ich bin neu hier, und deshalb etwas unerfahren wenn du hilfreiche Tipps bezüglich dem lernen von C# hast lass sie mich wissen !

P
441 Beiträge seit 2014
vor 7 Jahren

Das müsstest du dir selber beantworten können.

Wenn du einfach nur das Event änderst, sollte es die wenigsten Auswirkungen haben.

3.825 Beiträge seit 2006
vor 7 Jahren

Ich mach das genauso. Sollte klappen.

Ich benutze nur this.Visible = false; statt this.Hide();

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

C
2.121 Beiträge seit 2010
vor 7 Jahren

Ein Formular verstecken noch bevor es angezeigt wird sieht nicht nach einem guten Plan aus. Warum erzeugst du nicht das Formular das tatsächlich zu sehen sein soll?
Beschreib mal verständlich was passieren soll und warum es passieren soll. Dann fällt sicher jemandem etwas ein.

D
985 Beiträge seit 2014
vor 7 Jahren

Doku: Ereignisreihenfolge in Windows Forms

Dort sieht man schon direkt, wann die Visible Eigenschaft wohl geändert wird (da gibt es auch ein Event).

Eine Möglichkeit wäre, diesen Einstellungs-Dialog auch als einen Dialog zu öffnen (als modales Fenster) mit ShowDialog.

3.825 Beiträge seit 2006
vor 7 Jahren

Ein Formular verstecken noch bevor es angezeigt wird sieht nicht nach einem guten Plan aus. Warum erzeugst du nicht das Formular das tatsächlich zu sehen sein soll?

Bei mir kommt das vor wenn man dem Programm ein Parameter für eine automatische Aktion mitgibt.

Das Hauptfenster wird unsichtbar gemacht und das Fenster das die gewünschte Aktion durchführt angezeigt. Nach Beendigung ohne Fehler wird alles wieder geschlossen.

Beispiele : Datenbank-Backup, Backup in die Cloud, EDI-Import, Reorganisation.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

3.003 Beiträge seit 2006
vor 7 Jahren

Ein Formular verstecken noch bevor es angezeigt wird sieht nicht nach einem guten Plan aus. Warum erzeugst du nicht das Formular das tatsächlich zu sehen sein soll?

Bei kommt das vor wenn man dem Programm ein Parameter für eine automatische Aktion mitgibt.

Das sieht immer noch nicht nach einem guten Plan aus. Wenn das Hauptfenster nicht gebraucht wird, warum es erzeugen?
Einstiegspunkt -> Befehlszeilenargumente prüfen -> korrektes Fenster erzeugen -> es seine Arbeit tun lassen (Fortschrittsanzeige des autom. gestarteten Exports, was auch immer, oder eben Hauptfenster) -> Ende.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)