Problem mit X für Cancel bei Dialogen

  • VB.NET

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

    Problem mit X für Cancel bei Dialogen

    Moin!

    ich habe den bt_cancel für das "X" in den Dialogen zugewiesen.

    Aber irgendwie wird nicht das gemacht, was beim Abbruch erfolgen soll.

    Wenn ich im Debugger hier einen Haltepunkt setze ....

    VB.NET-Quellcode

    1. Private Sub bt_Cancel_Click(sender As Object, e As EventArgs) Handles bt_Cancel.Click
    2. _FileFullName = "" ' Bei Abbruch gibt es keinen Namen
    3. End Sub


    Dann wird der nicht erreicht.

    Habe ich einen falschen Gedanken?

    Jan

    jan99 schrieb:

    ich habe den bt_cancel für das "X" in den Dialogen zugewiesen.
    Und ich hab keine Ahnung, was das zu bedeuten hat. Wenn Du auf das rote X oben rechts auf nem Fenster klickst, wird unter anderem das FormClosing-Event gefeuert. Aber nicht ein Button-Click-EventHandler.
    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.

    jan99 schrieb:

    Habe ich einen falschen Gedanken?
    Ich kenne nicht die restliche Logik Deines Dialogs.
    Probiere es mal anders herum:
    Setze _FileFullName = "" bei der Instanziierung des Dialogs und weise _FileFullName den Namen zu, wenn Du auf OK drückst.
    Ansonsten arbeite mit DialogResult, dann brauchst Du keinen bt_Cancel.Click-Handler.
    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!
    Moin!

    ich hatte das FormClosing-Event mit an das Button-Close gehängt.

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Dialog schließen
    3. ''' </summary>
    4. Private Sub Bt_cancel_Click(sender As Object, e As EventArgs) Handles bt_cancel.Click, Me.FormClosing
    5. Me.Close()
    6. End Sub


    das hat bei einfachen Dingen auch auf den ersten Blick funktioniert.

    Dann gab es aber noch die OK-Buttons die etwas machen und am Schluss den Dialog schließen.

    Da ist es dann zu einem stackoverflow-Fehler gekommen, vermutlich weil das Dialogschließen mit dem FormClosing in die Quere gekommen sind.



    Habe ich da etwas falsch verstanden?

    Gruß jan
    Naja, jetzt hast Du ne Endlosschleife. Dein Code

    VB.NET-Quellcode

    1. […] Handles bt_cancel.Click, Me.FormClosing
    2. Me.Close()

    besagt ja: Wenn das Form geschlossen wird, schließe das Form.
    Das ist wie: "Sobald Du von einem Apfel abbeißt, beiß (nochmal) von einem Apfel ab." Auch so kann man ins Krankenhaus kommen. Besonders wenn man im Supermarkt ist, wo es viele Äpfel gibt.
    Nimm das , Me.FormClosing raus und fertig. Was hattest Du denn gedacht, welches Problem Du damit lösen kannst?
    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.

    jan99 schrieb:

    Habe ich da etwas falsch verstanden?
    Wie sieht denn Dein FormClosing-Code aus?
    Setze da einen Haltepunkt rein und Du wirst sehen, was passiert.
    Debuggen, Fehler finden und beseitigen
    ====
    @VaporiZed Petze
    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!
    Hi !

    ich habe mein Formclosing einfach an das Bt_cancel-Event gehängt wie in

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Dialog schließen
    3. ''' </summary>
    4. Private Sub Bt_cancel_Click(sender As Object, e As EventArgs) Handles bt_cancel.Click, Me.FormClosing
    5. Me.Close()
    6. End Sub


    angehängt.

    Jan
    @Dksksm Das sieht mir doch sehr nach Beratungsresistenz und / oder Lernbefreiung aus. ;)
    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!
    Hi !

    ich habe das versucht zu debuggen und bei dem X-Schließen wird mit dem Me.FormClosing wird auch nochmal das Bt_cancel_Click aufgerufen und das Ganze hat die Fehlermeldung aus Problem mit X für Cancel bei Dialogen hervorgebracht.

    Deshalb verstehe ich das Ganze nicht.

    Gruß Jan
    Nimm doch einfach den Button-Handler raus und verarbeite das FormClosing-Event.
    Da kannst du doch den Dialog-Status abfragen (Ob OK, Cancel etc.) und dann weitermachen... Wurde doch oben schon erwähnt..
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    jan99 schrieb:

    Deshalb verstehe ich das Ganze nicht.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.

    VB.NET-Quellcode

    1. Me.Close()
    ruft explizit den FormClosing-Eventhandler auf, in dem Du ein Me.Close() stehen hast.
    ...
    Verstehst Du es jetzt?
    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!