2016-04-20 22 views
0

Ich entwickle eine Anwendung, die minimiert gestartet und in der Taskleiste mit einem Benachrichtigungssymbol angezeigt wird.Ausblenden() funktioniert nicht, wenn die Anwendung gestartet wird

Wenn Anwendung ausgeführt wird und ich es minimieren, führt Form die Hide() -Methode in Resize-Ereignis aus, um das Fenster auszublenden, und es funktioniert (Fenster wird aus Taskleiste ausgeblendet und das Benachrichtigungssymbol in der Taskleiste angezeigt). Das Problem ist, wenn die Anwendung gestartet wird. Es ist so konfiguriert, dass es minimiert ausgeführt wird.

Wenn es gestartet wird, wird das Taskleistensymbol angezeigt und das Fenster erscheint minimiert, aber es wird in der Taskleiste angezeigt.

Was ist das Problem?

Dies ist das Resize-Ereignis:

private void frmMain_Resize(object sender, EventArgs e) 
    { 
     if (this.WindowState == FormWindowState.Minimized) 
     { 
      Hide(); 
      notifyIcon.Visible = true; 
      notifyIcon.ShowBalloonTip(200); 
     } 
    } 
+0

Versuchen was 'this.Hide();' –

+3

haben Sie versucht, Form Eigentum 'ShowOnTaskbar' Einstellung Ereignis' false' – Nino

+0

Resize wird beim Start nicht gefeuert zu werden? – FINDarkside

Antwort

0

dieses

namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Resize(object sender, EventArgs e) 
     { 
      HideWindow(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      HideWindow(); 
     } 

     private void HideWindow() 
     { 
      if (this.Visible == true) 
      { 
       if (this.WindowState == FormWindowState.Minimized) 
       { 
        this.Hide(); 
       } 
      } 
     } 
    } 
} 
0

Ich würde versuchen, den gesamten Code in Load-Ereignis statt Resize setzen:

private void frmMain_Load(object sender, EventArgs e) 
{ 
    if (this.WindowState == FormWindowState.Minimized) 
    { 
     Hide(); 
     notifyIcon.Visible = true; 
     notifyIcon.ShowBalloonTip(200); 
    } 
} 

Resize-Ereignis nur aufgerufen, wenn die Anwendung geändert wird irgendwie manuell (ich verstehe das ist, warum es funktioniert, wenn Sie auf die Schaltfläche zum Minimieren klicken, aber es nicht beim Start).

+0

Er will es nicht nur versteckt auf Last, er will, dass es jedes Mal ausgeblendet wird, wenn er das Fenster minimiert, einschließlich des ersten Mal, wenn das Fenster geladen wird, wenn es im minimierten Zustand startet. Dein Code handhabt den ersten Startfall, aber er behandelt keine Minimierungen nach dem ersten. –

+0

wie OP Frage: Hide() funktioniert nicht, wenn Anwendung gestartet wird. Die Verwendung des Codes, den ich Hide() zur Verfügung gestellt habe, funktioniert jetzt, wenn die App gestartet wird. Ich denke, OP kann einfach ein Ereignis erstellen, das sowohl beim App-Start als auch bei der App-Größe ausgelöst wird und von dort aus behandelt wird. –

+0

No ... resize Event wird auch beim Start ausgelöst. Ich habe jedoch festgestellt, wo das Problem liegt. Beim Start ist die Visible-Eigenschaft "false", wenn das Formular automatisch minimiert wird, sodass die Ausblendung keine Auswirkung hat. Also habe ich es gelöst, indem ich das Shown Event verwende. Wenn ein Benachrichtigungssymbol angezeigt wird, rufe ich Hide erneut auf. Dieses Ereignis wird nur ausgelöst, wenn das Formular zum ersten Mal angezeigt wird. – jstuardo