Fenster schließen

  • WPF

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Thomas2705.

    Fenster schließen

    Bisher nutzte ich zum schließen eines Fensters und Beenden der Anwendung die Anweisung:

    VB.NET-Quellcode

    1. Me.close()
    2. Application.Current.Shutdown()


    Nach Umstellung auf Visual Studio 2019 bzw. Net Framework 4.8 funktioniert es nicht mehr. Wie sollte es jetzt richtig lauten?

    Ich sollte vielleicht noch erwähnen das das Ereignis hier auf einem Image "MouseDown" und nicht auf einem Button liegt.

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

    Also habe gerade mal probiert, bei mir funktioniert das problemlos.

    Dann musst du wohl etwas präziser werden...
    Was funktioniert genau nicht?
    Gibt es Fehlermeldungen?

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    Ich habe keine Ahnung von WPF, aber wenn Du das Image in einen Border packst und dem das Schließen-MouseDown-Event an die Hand gibst, klappt es. Purer Spekulatius, aber wahrscheinliches Stichwort: bubbling event, siehe stackoverflow, MSDN
    So von wegen: MouseDown wird absichtlich von vielen CEs nicht verarbeitet.
    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.
    WPF - hab ich gar nicht bemerkt. Geht mir gerade genau so wie dir Berdi :)

    Das ist aber eigentlich noch mehr mein bereich, werde nochmal schauen und mich dann melden.

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    Hallo @Thomas2705

    Erstmal Application.Current.Shutdown() funktioniert unter 4.8 genauso. In diesem Bereich gar es keine Änderungen im .Net Framework.
    Allerdings ist alles was wir hier raten reine spekulation da du keinen XAML zeigst. Den hier gibt es viele Faktoren welche das Verhalten beeinflussen können.

    z.b. das in deinem Fall MouseDown gar nicht erst geworfen wird weil dein Image in einem Container liegt welcher das Ereigniss vorher bereits abfängt.
    Wie @VaporiZed bereits angesprochen hat ist das Thema Bubbling und Tunneling der Events in der WPF wichtig.
    Ich verlinke hier mal auf das Kapitel in meiner Tutorialreihe: 2.1.8.3 - Eventrouting

    Verwende also besser das PreviewMouseDown.

    Hast du einen Haltepunkt gesetzt? Ich denke der Code wird nicht durchlaufen. Somit wäre es egal welchen Code du verwendest.
    Nächste Frage: Ist denn im Image-Control ein Bild enthalten? Denn wenn nicht wird das Event auch nicht geworfen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Guten Tag Sascha;
    Hier der Code zum eingebetteten Image:

    XML-Quellcode

    1. <Border>
    2. <Image Name="close" Source="..." MouseDown="btn_ereignis">
    3. </Image>
    4. </Border>


    Tatsächlich funktioniert das Ereignis nur beim Schließen des Fensters nicht. Wenn z.B. ein anderes Fenster geöffnet werden soll funktioniert alles ohne Einschränkungen.

    Setze ich auf das Image

    XML-Quellcode

    1. PreviewMouseDown="PreviewMouseDown"
    und

    VB.NET-Quellcode

    1. Private Sub PreviewMouseDown(sender As Object, e As MouseButtonEventArgs)
    2. Dim start As New start Dim unused = start.close()
    3. End Sub


    wird es ausgeführt.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Thomas2705“ ()