2014-09-25 92 views
0

我有一個Winforms應用程序,我可以通過點擊窗口右上角的相應按鈕來最小化;然後,我可以通過點擊這個應用程序的任務欄圖標來最大化它。如何從任務欄最小化和最大化winform?

我的問題是,如果窗口最大化,它應該是最小化時,我再次點擊任務欄圖標,它目前沒有發生。

我該如何使這種行爲發生?我不想使用NotifyIcon或系統托盤。

+0

什麼?你說你可以做那些事情,但你想要代碼去做?這個問題很不明確,沒有顯示研究,而且範圍太廣泛。 – paqogomez 2014-09-25 07:37:15

+0

@paqo我認爲你對這個問題相當苛刻。意圖本身很明確:從應用程序的任務欄選項卡執行最小化和最大化。儘管沒有明確指出,這項研究在這裏:他談到了NotifyIcon和系統托盤。 – Kilazur 2014-09-25 07:41:57

+0

我的意思是說,我只能從任務欄最大化窗口窗體,然後按窗口窗體上的最小化按鈕。之後,我無法從任務欄中將其最小化。我可以將它從窗體按鈕點擊最小化,但不是從任務欄上點擊。 – 2014-09-25 07:42:13

回答

-1

嘗試檢查發生了什麼事在LocationChangedMoveRegionChangedResizeResizeBeginResizeEndSizeChanged事件。可能是因爲這些事件中的一些代碼阻止了你描述的行爲。

我在新的空白表單上看不到所描述的問題。

更新:我使用的是Window 7 Pro。

+0

我認爲這是由於FormBorderStyle = None。當我將其設置爲'FixedSingle'時,它會提供所需的行爲。一切正在工作 – 2014-09-25 08:42:30

+0

我怎樣才能實現與FormBorderStyle = None相同的行爲?有沒有辦法做到這一點? – 2014-09-25 09:06:46

+0

似乎沒有簡單的方法來做到這一點。我看到兩種方法: 1)使用FixedSingle並執行標題和邊框的繪製,使其看起來好像沒有。 2)讓你的窗體_沒有任務欄按鈕,並有一個更多的不可見形式_with_任務欄按鈕,並以某種方式進行溝通。 – 2014-09-25 09:36:01

1

你可以沒有邊界也做到這一點.. 需要額外的編碼

2

const int的WS_MINIMIZEBOX =地址0x20000; const int CS_DBLCLKS = 0x8; 保護覆蓋CreateParams CreateParams { 得到 { CreateParams cp = base.CreateParams; cp.Style | = WS_MINIMIZEBOX; cp.ClassStyle | = CS_DBLCLKS; return cp; } }

+0

將此代碼放在您的表單中。它爲我工作得很好。 – Monika 2016-03-03 10:23:36