2008-12-16 179 views
1

我想阻止用戶將Windows窗體最大化爲全屏,因此我禁用了最大化按鈕。但是,我希望能夠讓用戶「恢復」表單。當他們點擊恢復按鈕時,我希望它顯示一個不同的,縮小的縮小的窗體,這會向他們顯示一個最大化的按鈕,它會將使用返回到原始窗體。顯示沒有最大化按鈕的還原按鈕

有沒有辦法做到這一點?

謝謝。

編輯: 你不明白,我不阻止用戶調整窗體的大小。發生的事情是,當點擊恢復按鈕時,它會隱藏表單並打開一個新的控件,並且控件數量較少。當他們在較小的表單上單擊最大化時,它將返回到原始表單。

回答

2

我在工作中看到了類似的問題,我可以找到唯一的解決方案,包括設置無證的窗口樣式,這是我不願意做的。

因此,您認爲最好的解決方案是隱藏當前的最小化/最大化/還原按鈕,並使用某些ownerdraw或其他命令添加自己的問題。

從用戶交互的角度來看待這個問題,我希望最小化/最大化/還原按鈕爲您的應用程序完成與其他所有操作完全相同的操作。重寫該功能會讓用戶感到困惑,因此我建議在標題欄或界面上的其他位置創建不同按鈕來執行此功能。

0

您可以設置MaximumSize和MinimumSize並啓用最大化按鈕來獲得這種效果。

+0

實際上,當我這樣做時,它將它移動到右上角,雖然它確實保持正確的尺寸 – Malfist 2008-12-16 21:18:38

+0

在這個響應式設計的時代,我會考慮約翰B所說的 - 不要讓「縮小」 '版本是固定的大小,並且至少允許它在一定程度上調整大小。如果它移動到右上角,您可以使用「FormStartPosition.CenterScreen」設置。 – 2014-06-23 18:29:26

1

FWIW,正確的答案是,讓您的形式正確地調整,適應任何窗口大小,而不是約束用戶在什麼你分辨率字號權看起來顯示屏上。不可調整大小的窗口是我在應用程序中遇到的最煩人的事情之一(Windows本身充滿了它們)。

+1

你不明白,我不阻止用戶調整窗體大小。發生的事情是,當點擊恢復按鈕時,它會隱藏表單並打開一個新的控件,並且控件數量較少。當他們在較小的表單上單擊最大化時,它將返回到原始表單。 – Malfist 2008-12-17 15:14:59

0

我最近有類似的情況,從UI設計的角度來看,在Windows Media Player中找到了一個很好的例子。最小化,最大化和恢復按鈕保持原樣,並在右下角有一個單獨的按鈕,用於「切換到緊湊模式」。在迷你/緊湊模式下,同一個按鈕切換到「切換到完整模式」。另一個替代例子是Skype,它在標準最小化按鈕的左邊有一個額外的系統圖標按鈕,在緊湊和標準模式之間切換。

(如果我有幸,我會一直優先把這個作爲註釋添加到Daemin的接受的答案,還是比較陌生的StackOverflow)

0

「恢復」形式將觸發Resize事件,你可以檢查父表單是否不再FormWindowState.Maximized。如果沒有,您可以打開子窗體並隱藏父窗體。

要反轉這一點,您可以通過隱藏(或丟棄)子表單來最大化子表單,然後取消隱藏並將父表單設置爲FormWindowState.Maximized

我可以用這種方法看到的唯一問題是Resize事件可能會在表單達到最大化狀態之前觸發多次。一個標誌可能需要忽略這些,直到表單從當前狀態變爲所需狀態,這可能導致無限循環。