2011-08-12 78 views
10

如何從窗體中刪除最大化按鈕?我已經禁用了它,但它仍然顯示,它不起作用。我只想要一個只有關閉和最小化按鈕的窗體。這是一個Windows窗體應用程序,我正在使用Visual Studio 2010.Visual Studio-隱藏最大化按鈕形式

+0

它是WPF還是WinForms? – Mrchief

+0

這是一個Windows窗體應用程序。 – Walker

回答

26

如果不繪製自己的窗口框架,隱藏最大化按鈕是不可能的。

禁用它會告訴用戶他無法最大化UX的表單。隱藏它並沒有幫助,因爲雙擊標題欄仍然會使窗口最大化(如果您還沒有禁用最大化)。

您可以設置 FormBorderStyle設定爲 FixedToolWindowSizableToolWindow,但隨後的形式將不會顯示在Windows任務欄或ALT + TAB 窗口請參閱下面的更新。

您可以隱藏整個ControlBox這也將刪除MinimizeClose以及上下文菜單。

挑選你的毒藥!


更新(15年12月24日)

我決定重新審視各種選擇景觀,似乎:

  1. 相反的是documentation說,設置FormBorderStyleFixedToolWindow/SizableToolWindow不再隱藏應用程序在任務欄或ALT + TAB窗口在Windows 7及以上。 ShowInTaskbar專門決定在這種情況下顯示/隱藏效果(感謝@ pinowthebird推動我重新看)。
  2. 設置FormBorderStyleFixedDialog也隱藏最大化/最小化按鈕,並顯示在任務欄中,雖然默認圖標現在丟失(不知道爲什麼)。
  3. 設置MaximizeBox = False不會隱藏按鈕,這與documentation相反。它只是禁用它(並通過工具欄雙擊最大化功能)。
  4. 設置MaximizeBox = FalseMinimizeBox = False隱藏他們,不管FormBorderStyle

下面是一些截圖:

<code>FormBorderStyle</code> = <code>FixedToolWindow/SizableToolWindow</code> <code>FormBorderStyle</code> = <code>FixedDialog</code> <code>MaximizeBox = False</code> **both** <code>MaximizeBox = False</code> and <code>MinimizeBox = False</code>

結論:根據您的要求

,您可以選擇1,2或3。希望這有助於未來的遊客。

免責聲明:這些測試是在2015年VS做,淨4.6和全新的winform應用程序。文檔說這些屬性自.Net 1.1開始提供。然而,正如你在截圖中看到的那樣 - 用一粒鹽做文檔!此外,操作系統在結果中起着至關重要的作用。

+0

「FormBorderStyle」屬性不確定表單是否顯示在Windows任務欄中。要改變的屬性被稱爲'ShowInTaskbar'。 – pinowthebird

+0

@pinowthebird:你的評論讓我重新思考。我更新了我的答案。 – Mrchief

0

如果您將ControlBox設置爲False,您將失去右上角的最小化,最大化和關閉按鈕。 ControlBox是容納窗體左上角上下文菜單的對象。

如果您將ControlBox設置爲True,則必須將均設置爲最大化和最小化爲False - 這隱藏了兩個按鈕。沒有可能的p /調用Win32,我不相信你的控制得到更細粒度的。

+1

有沒有辦法做到這一點,但不會丟失最小化按鈕? – Walker

+0

編號在工具窗口之外,Win32不提供帶有最小化按鈕的窗口的開箱即用方法,而沒有最大化按鈕。他們來來去去。 –

4

您可以將FormBorderStyle的屬性更改爲FixedToolWindowsSizableToolWindow

-1

我們可以禁用這兩個圖標,減少最大化。你將不得不設置「最小化和最大化圖標,兩者。如果任一圖標仍然是正確的,那麼所有的三個圖標將表單窗口上顯示。

+0

-1。從OP的問題:'我想要一個只有關閉和最小化按鈕的表單。你的解決方案是'不,你不能那樣'。根據這裏列出的其他答案,這是不正確的。 – Neolisk

6

很簡單:) 做到這一點

私人小組Form1_Load的(發送者爲對象,E作爲EventArgs的)把手MyBase.Load

MaximizeBox = False 

End Sub 

現在,您的客戶端無法最大限度地發揮你的形式,即使他/她雙擊窗體的標題欄。

0
Private Sub Form4_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize 


If Me.WindowState = FormWindowState.Minimized Then 

Me.WindowState = FormWindowState.Normal 

End If 

End Sub 
+1

請在您的回答中添加說明。 – Sufian

1

只需在窗體的屬性窗口中將屬性「MaximiseBox」設置爲false即可。 最小化盒也是如此。

0

在Visual Studio中,首先選擇窗體,轉到屬性並單擊最大化框,將其設置爲False。它將隱藏最大化按鈕。