WinForms - warum ist eine „Show ()“ nach einem System-Tray Doppelklick in meiner app minimierte enden?

StackOverflow https://stackoverflow.com/questions/2575788

  •  24-09-2019
  •  | 
  •  

Frage

WinForms - warum tut eine "Show ()" nach einem System-Tray doppelklicken Sie am Ende in meiner app minimiert

Wie stelle ich sicher Inthe NotifyIcon Doppelklick Fall, dass meine versteckte Hauptform wieder sichtbar als normal kommt, nicht minimiert (noch was das betrifft maximiert auch)

War es hilfreich?

Lösung

Ich würde vermuten, dass Sie Ihre Anwendung in Fach Aktion auf minimieren setzen. In diesem Fall wieder zeigt nur die Sichtbarkeit.

Versuchen form.WindowState = Normal vor anzeigen Hinzufügen ().

Andere Tipps

Verstecken Sie Ihre Form mit dem NotifyIcon ist oft wünschenswert, so dass Ihre App in der Ablage sofort beginnt. Sie können es verhindern, dass immer sichtbar durch die SetVisibleCore überschrieben () -Methode. Sie wollen auch in der Regel, damit er nicht zu schließen, wenn der Benutzer die X-Taste klickt, überschreiben die OnFormClosing Methode, um die Form zu verbergen. Sie werden ein Kontextmenü wollen dem Benutzer zu ermöglichen, um wirklich Ihre Anwendung zu beenden.

Fügen Sie einen NotifyIcon und Context zu Ihrem Formular. Geben Sie den CMS die Show und Exit-Menü Befehle. Machen Sie das Formular-Code sieht wie folgt aus:

  public partial class Form1 : Form {
    bool mAllowClose;
    public Form1() {
      InitializeComponent();
      notifyIcon1.DoubleClick += notifyIcon1_DoubleClick;
      notifyIcon1.ContextMenuStrip = contextMenuStrip1;
      showToolStripMenuItem.Click += notifyIcon1_DoubleClick;
      exitToolStripMenuItem.Click += (o, e) => { mAllowClose = true; Close(); };
    }

    protected override void SetVisibleCore(bool value) {
      // Prevent form getting visible when started
      // Beware that the Load event won't run until it becomes visible
      if (!this.IsHandleCreated) {
        this.CreateHandle();
        value = false;
      }
      base.SetVisibleCore(value);
    }

    protected override void OnFormClosing(FormClosingEventArgs e) {
      if (!this.mAllowClose) {    // Just hide, unless the user used the ContextMenuStrip
        e.Cancel = true;
        this.Hide();
      }
    }

    void notifyIcon1_DoubleClick(object sender, EventArgs e) {
      this.WindowState = FormWindowState.Normal;  // Just in case...
      this.Show();
    }

  }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top