2013-05-30 189 views
2

隱藏,如下面代碼中所示,如果停用事件被觸發,窗體將被隱藏,如果notifyIcon被點擊,窗體將再次顯示,問題是,當窗體狀態可見時,然後notifyIcon被點擊,表單將被隱藏並立即顯示,我不希望這種行爲,請別人幫助我。窗體在隱藏事件

private void FormMain_Deactivate(object sender, EventArgs e) 
    { 
     this.Hide(); 
    } 

    private void notifyIcon_MouseClick(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      this.Show(); 
      this.Activate(); 
     } 
    } 
+0

在http://stackoverflow.com/questions/7309098/c-sharp-toggle-form-visibility-on-notifyicon-click-and-看看hide-it-on-click-elsewher – coolmine

+1

在你提到的問題中給出的解決方案仍然存在缺陷,因爲如果用戶點擊的速度比指定的時間更快(在這種情況下爲1000毫秒),那麼表單將不會顯示,我希望就像開始菜單的行爲一樣。 – nyongrand

+0

請注意,它是刻度,而不是毫秒。 – coolmine

回答

-2
private void notifyIcon_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     If (!this.isVisible) 
     { 
      this.Show(); 
      this.Activate(); 
     } 
    } 
} 

刺在黑暗的,因爲我從我身邊離開的那一刻...祝你好運:-)

+1

這是行不通的,如果窗體是可見的,窗體將被隱藏並立即顯示出來,我希望這是如此簡單。 – nyongrand

-2

試試這個:

this.Hide(); 
(FormToBeDisplayed).ShowDialog(); 
this.Show(); 
0

您應該簡單地驗證是否它是可見的或不可見的。

private void FormMain_Deactivate(object sender, EventArgs e) 
{ 
    this.Hide(); 
} 

    private void notifyIcon_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left && !this.isVisible) 
    { 
     this.Show(); 
     this.Activate(); 
    } 
} 

希望它可以幫助:)

+1

這是行不通的,如果窗體可見窗體將被隱藏並立即顯示,我希望這是如此簡單。 – nyongrand