C# Form2 von Form1 aus schließen

  • WPF

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von EaranMaleasi.

    C# Form2 von Form1 aus schließen

    Hallo,

    eigentlich total simpel aber ich komme nicht dahinter.
    Ich möchte gerne für eine Visualisierung (In C#) diverse Fenster steuern, während ich gerade noch tausend andere Sachen fertig stellen muss - finde ich nicht den Weg eine Form von der Hauptform zu schließen.
    Normalerweise Programmiere ich in VB.NET - aber so langsam komme ich auch auf C# klar, nur das ist gerade mein Problem.

    Ist der Code nicht:

    C#-Quellcode

    1. Form2 frm = new Form2();
    2. frm.Dispose();


    Wohlgemerkt, die Form ist bereits geöffnet. Ich möchte sie nur schließen! :D
    Würde mich über einen Code-Schnipsel freuen, den ich dafür anwenden könnte ;)

    Danke im voraus

    Releases:
    IceTea | QR-Converter by NudelHolz - einfach Text & URL zu QR Konvertieren.

    NudelHolz schrieb:

    Ich möchte sie nur schließen!
    Also schließen im Sinne von unsichtbar machen und nach dem Abarbeiten der
    tausend andere Sachen
    oder im Sinne von komplett zumachen, also als ob du bei der Hauptanwendung das rote X drückst?

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Google ist dein Freund und Helfer :D

    Take a look ;)
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Form 2 "Klassenweit" also außerhalb einer Methode deklarieren. Dann kannst du in der Methode zum schließen der Form einfach NameDerFormInstanz.Close() machen
    "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
    *entfernt*

    Hallo,
    @Radinator
    Es ist nur eine Visualisierung. Das setzen der Werte mache ich mit der Hauptform.
    Ich bekomme von einer SPS eine Zahl 1-18 je nach dem welche Zahl die Hauptform fängt, soll er das der Zahl zugewiesene Fenster öffnen und das alte wieder schließen.
    Das öffnen klappt bereits ohne fehler, aber die letzte Form bleibt geöffnet, wenn ein neues Fenster sich öffnet und ich habe angst, dass später bei Kunden die Formen den PC überlasten, wenn 1000000 formen offen sind.



    und @Acr0most das ist nicht das, wonach ich gefragt habe.
    Bitte nochmal genau lesen, ich will nicht in der zweiten form einen button haben und es manuell schließen, sondern von form1 aus die form2 schließen.

    ~blaze~: Vollzitat entfernt

    Releases:
    IceTea | QR-Converter by NudelHolz - einfach Text & URL zu QR Konvertieren.

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

    Sorry, hast natürlich Recht @NudelHolz!

    Hier das Beispiel für @mrMo 's Post.

    frmMain = erste Form, Form1 = zweite Form.
    Bevor es zur Verwirrung kommt :D

    C#-Quellcode

    1. public partial class MainForm : Form
    2. {
    3. protected Form1 frm;
    4. public MainForm()
    5. {
    6. //
    7. // The InitializeComponent() call is required for Windows Forms designer support.
    8. //
    9. InitializeComponent();
    10. this.frm = new Form1();
    11. //
    12. // TODO: Add constructor code after the InitializeComponent() call.
    13. //
    14. }
    15. void Button1Click(object sender, EventArgs e)
    16. {
    17. this.frm.Show();
    18. }
    19. void Button2Click(object sender, EventArgs e)
    20. {
    21. this.frm.Close();
    22. }
    23. }


    LG Acr0most

    PS: Jemand eine Idee warum die Formatierung so spackt?
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Mit deinem Code kann man nur die Form schließen, in der der Code ist und nicht die andere Form :D
    Um es nochmal zu sagen, ich möchte von Form1 aus - die Form2 schließen, nachdem sie geöffnet wurde.

    Ich hätte bereits einen anderen Lösungsansatz, dass in jeder Form ein Timer läuft, der dann schaut ob seine Zahl dran ist und dann die Form schließt, aber das ist nicht gerade eine ordentliche Lösung.

    Releases:
    IceTea | QR-Converter by NudelHolz - einfach Text & URL zu QR Konvertieren.
    und nochmal :D
    Der Code hat 2 Forms.
    MainForm und Form1

    Auf MainForm liegen 2 Buttons. Open und Close

    Per Click auf open wird form1 geöffnet.
    per click auf close (ebenfalls auf mainform) wird form1 geschlossen.

    Sprich man schließt Form1 aus MainForm heraus.


    du hast vmtl protected Form1 frm; übersehen..

    LG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    *entfernt*
    *entfernt*
    @Acromost

    Jap, genau das hab ich nicht gesehen :D
    Super! Es klappt!! Danke ;)

    EDIT: Und es klappt sogar mit vielen forms :D perfekt! Hast meinen Tag gerettet @Acr0most - hätte mir noch nen Kater gesucht.



    Tja, zu früh gefreut.
    Es wird immer nur eine Instanz erstellt. Will man nun die Form ein zweites mal aufrufen, stürzt das programm ab, weil es die instanz nicht mehr findet.,,


    EDIT: Ich habe jetzt die Form nicht direkt schließen lassen, sondern nur verstecken lassen.. ob das was bringt?


    ~blaze~: Vollzitate entfernt, Doppelpost zusammengefügt

    Releases:
    IceTea | QR-Converter by NudelHolz - einfach Text & URL zu QR Konvertieren.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „~blaze~“ ()

    Möglicher Workaround:

    Kannst dir auch ne Collection aus Form-Elementen bauen, wenn du die sauber identifizieren kannst, kannst du da auch x Elemente erzeugen und gezielt beenden.
    Entsprechende Logik müsstest halt schnell ausdenken.
    Diese Collection sollte per "addForm" eine neue Instanz erzeugen und per removeForm("id") die Form wieder schließen und aus der Collection nehmen.

    LG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    @NudelHolz
    Es geht hier aber nicht um WPF...
    Im folgenden Thread wurde Ähnliches diskutiert:
    Meinungsfrage: TabControl mit TabPages oder lieber mehrere Forms, oder als MDI?
    Vlt. kannst du da etwas gebrauchen...

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

    Hallo,

    indem ich nun die fenster nur noch per instanz aufrufe, klappt dieses auch. Ja ich weiß aber wo kommt sonst c# allgemeines hin?

    Releases:
    IceTea | QR-Converter by NudelHolz - einfach Text & URL zu QR Konvertieren.