【问题标题】:Visual Studio- Hiding the Maximize Button in a FormVisual Studio - 隐藏窗体中的最大化按钮
【发布时间】:2011-10-26 03:14:10
【问题描述】:

如何从表单中删除最大化按钮?我已经禁用了它,但它仍然显示,它只是不起作用。我想要一个只有关闭和最小化按钮的表单。这是一个 Windows 窗体应用程序,我使用的是 Visual Studio 2010。

【问题讨论】:

  • 这是一个窗体应用程序。

标签: .net vb.net winforms visual-studio visual-studio-2010


【解决方案1】:

您还可以通过在属性中将表单边框样式设置为 none 来跳过使用默认按钮,这会删除所有三个按钮,然后添加一个自定义按钮,例如带有图标文件或背景图像(与您从图标8中选择的密切相关的内容) .com)。

【讨论】:

    【解决方案2】:

    在 Visual Studio 中,首先选择窗体,转到属性并单击最大化框,将其设置为 False。它将隐藏最大化按钮。

    【讨论】:

      【解决方案3】:

      如果不绘制自己的窗口框架,就不可能隐藏最大化按钮。

      禁用它会告诉用户他无法最大化良好用户体验的表单。隐藏它并没有帮助,因为双击标题栏仍然会最大化窗口(如果您没有禁用最大化)。

      你可以将FormBorderStyle设置为FixedToolWindowSizableToolWindow,但随后窗体将不会显示在Windows任务栏或ALT+TAB 窗口。 请参阅下面的更新。

      您可以隐藏整个 ControlBox,这也将删除 MinimizeClose 以及上下文菜单。

      选择你的毒药!


      更新(2015 年 12 月 24 日)

      我决定用各种选择重新审视风景,似乎:

      1. documentation 所说的相反,将FormBorderStyle 设置为FixedToolWindow/SizableToolWindow 不再隐藏任务栏中的应用程序或 中的ALT+TAB 窗口Windows 7 及更高版本。 ShowInTaskbar 在这种情况下专门决定显示/隐藏效果(感谢@pinowthebird 推动我重新查看)。
      2. FormBorderStyle 设置为FixedDialog 也会隐藏最大化/最小化按钮并显示在任务栏中,尽管默认图标现在已丢失(不确定原因)。
      3. 设置MaximizeBox = False 不会隐藏按钮,这与documentation 再次相反。它只是禁用它(并通过双击工具栏最大化功能)。
      4. 设置 both MaximizeBox = FalseMinimizeBox = False 会隐藏它们,而与 FormBorderStyle 无关。

      以下是一些截图:

      结论:

      根据您的要求,您可以选择 1、2 或 3。希望这对未来的访问者有所帮助。

      免责声明:这些测试是在 VS 2015、.Net 4.6 和全新的 WinForm 应用程序中完成的。文档说这些属性自 .Net 1.1 起就可用。但是,正如您在屏幕截图中看到的那样 - 对文档持保留态度!操作系统在结果中也起着至关重要的作用。

      【讨论】:

      • FormBorderStyle 属性不能确定窗体是否显示在 Windows 任务栏中。要更改的属性称为ShowInTaskbar
      • @pinowthebird:你的评论让我重新思考。我更新了我的答案。
      【解决方案4】:

      这很简单:) 这样做

      Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

          MaximizeBox = False
      
      End Sub
      

      现在,您的客户无法最大化您的表单,即使他/她双击表单的标题栏。

      【讨论】:

        【解决方案5】:

        只需在表单的属性窗口中将属性“MaximiseBox”设置为 false。 最小化框也是如此。

        【讨论】:

          【解决方案6】:
          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 
          

          【讨论】:

          • 请在您的答案中添加描述。
          【解决方案7】:

          您可以将FormBorderStyle 的属性更改为FixedToolWindowsSizableToolWindow

          【讨论】:

            【解决方案8】:

            我们可以禁用两个图标,minimizemaximize。您必须将“最小化和最大化图标”都设置为 false。如果任一图标保持为真,则所有三个图标都将显示在表单窗口中。

            【讨论】:

            • -1。来自 OP 的问题:I want a form with only the close and minimize buttons。您的解决方案是No, you can't have that。根据此处列出的其他答案,这不是真的。
            【解决方案9】:

            如果将 ControlBox 设置为 False,则会丢失右上角的最小化、最大化和关闭按钮。 ControlBox 是窗体左上角包含上下文菜单的对象。

            如果您将 ControlBox 设置为 True,则必须将 both 最大化和最小化设置为 False - 这会隐藏两个按钮。如果没有可能 p/调用 Win32,我认为您的控件不会比这更精细。

            【讨论】:

            • 有没有办法在不丢失最小化按钮的情况下做到这一点?
            • 没有。在工具窗口之外,Win32 没有提供一种开箱即用的方式来让窗口带有最小化按钮而没有最大化按钮。他们成对来来去去。
            猜你喜欢
            • 1970-01-01
            • 2021-08-26
            • 2011-09-25
            • 1970-01-01
            • 2014-03-30
            • 2013-11-27
            • 2011-03-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多