Ins System Tray minimieren funktioniert nicht

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ins System Tray minimieren funktioniert nicht

    Moin,

    Ich hab in mein Programm zwei Buttons eingebaut: btnMinimizeToTray und btnExit
    Das Ganze sieht folgendermaßen aus:

    C#-Quellcode

    1. private enum CloseType {
    2. EXIT,
    3. MINIMIZE_TO_TRAY
    4. }
    5. private CloseType currentCloseType = CloseType.MINIMIZE_TO_TRAY;
    6. private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
    7. {
    8. if (currentCloseType == CloseType.MINIMIZE_TO_TRAY) {
    9. e.Cancel = true;
    10. ShowInTaskbar = false;
    11. this.Hide();
    12. Properties.Settings.Default.Save();
    13. return;
    14. }
    15. else if(currentCloseType == CloseType.EXIT) {
    16. Properties.Settings.Default.Save();
    17. Application.Exit();
    18. }
    19. }
    20. private void btnExit_Click(object sender, EventArgs e) {
    21. currentCloseType = CloseType.EXIT;
    22. this.Close();
    23. }
    24. private void btnMinimizeToTray_Click(object sender, EventArgs e) {
    25. currentCloseType = CloseType.MINIMIZE_TO_TRAY;
    26. this.Close();
    27. }


    Schließen funktioniert prima, minimieren schließt das Ganze aber auch.

    Ich finde aber meinen Fehler nicht, hab auch schon überlegt, ob es eine bessere Methode gibt, aber noch keine gefunden.
    Was überseh Ich?

    EDIT: Ich hab im FormClosing-EventHandler das ​e.Cancel = true; vergessen. Jetzt funktionierts natürlich.
    Der richtige Code ist oben eingefügt.

    Grüße
    Felix
    Grüße
    Felix

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

    @Kenaex Mach mal im das FormClosing 2 'Änderungen:

    C#-Quellcode

    1. private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
    2. {
    3. if (currentCloseType == CloseType.MINIMIZE_TO_TRAY)
    4. {
    5. ShowInTaskbar = false;
    6. this.Hide();
    7. Properties.Settings.Default.Save();
    8. e.Cancel = true; // dies
    9. return;
    10. }
    11. else if (currentCloseType == CloseType.EXIT)
    12. {
    13. Properties.Settings.Default.Save();
    14. //this.Close(); // und dies
    15. }
    16. }
    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!
    @Kenaex Application.Exit() ist ein Holzhammer, .Close() ist die feine englische Art.
    wenn Du im FormClosing .Close() aufrufst, kommst Du noch mal im FormClosing vorbei, das kann eine Endlosschleife / StackOverflow ergeben.
    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!