2012-09-07 72 views
3

我有一個應用程序使用Forms與FormBorderStyle設置爲「無」。C#,FormBorderStyle:None還原問題

問題是,如果用戶點擊「顯示桌面」按鈕(有效地最小化所有打開的窗口),然後從任務欄恢復其中一個窗體,則所有無邊界窗體將被恢復。注意:如果在單擊「顯示桌面」按鈕之前將窗體顯式最小化(即WindowState = FormWindowState.Minimized),則會導致該特定窗體的預期行爲。

還要注意的是,對於常規窗體甚至是無界限的WPF窗戶,情況並非如此。

Form.Designer.cs:

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 

Form.cs:

private void MinimizeButton_Click(object sender, EventArgs e) 
{ 
    // If minimized explicitly, form behaves appropriately 
    WindowState = FormWindowState.Minimized; 
} 

爲什麼是這樣的話任何想法/如何解決呢?

回答

2

我相信這只是默認行爲,因爲無邊界形式不應該被最小化。

結帳this後。希望它能幫助你改變這種默認行爲。

從後(添加到窗體):

const int WS_MINIMIZEBOX = 0x20000; 
const int CS_DBLCLKS = 0x8; 
protected override CreateParams CreateParams 
{ 
    get 
    { 
     CreateParams cp = base.CreateParams; 
     cp.Style |= WS_MINIMIZEBOX; 
     cp.ClassStyle |= CS_DBLCLKS; 
     return cp; 
    } 
} 
+0

嗯,它看起來像這個問題的答案是允許被最小化的形式,不能恢復的形式一次一個。當我有機會時,我會嘗試一下代碼,並讓你知道它是如何發生的。 – funseiki

+0

看起來像這樣做了。感謝您的鏈接! – funseiki