我知道如何做一个最大化按钮,但如何在VB中执行恢复按钮?

时间:2014-08-20 08:01:45

标签: vb.net windows winforms maximize-window

我只是想知道如何在表格中制作“恢复”按钮?但是从按钮上的最大化更改为恢复?

2 个答案:

答案 0 :(得分:1)

在标准的Windows用户界面中,最大化和恢复按钮是一个相同的。它们都由一组三个按钮中的中心按钮控制

在普通的非最大化窗口中,中心按钮是一个“盒子”形状,点击它会使窗口最大化:

在最大化窗口中,中心按钮更改为显示堆叠的图块,单击它会将窗口恢复为非最大化状态:

换句话说,中心“最大化”按钮是一个切换按钮。具有最大化窗口的唯一选项是恢复它,并且具有普通窗口的唯一选项是最大化它。您永远不能最大化最大化窗口,并且永远无法恢复正常的非最大化窗口。因此,为此设置单独的按钮将浪费房地产。他们只是坐在那里永远变灰了。

因此,您希望将表单的MaximizeBox property设置为True。您可以在设计器的“属性”窗口中执行此操作,也可以使用表单类的New方法中的代码执行此操作:

Me.MaximizeBox = True

如果确实想要第四个按钮,则必须自己接管绘制窗口的标题栏。这是真正的大工作,可能不是你想要的,因为你在评论中指出你是VB.NET的新手。大多数工作与VB.NET没什么关系,更多与Win32编程有关。除非您已经是专家Win32程序员迁移到VB.NET作为一种新语言,否则您将需要解决默认行为。对于试图从Windows Vista开始自定义标题栏的开发人员来说情况更糟 - Aero Glass效果不适合自定义。我不知道Windows 8的行为如何,但我怀疑它变得更容易了。如果您真的对此感兴趣,可以在线找到大量信息,即使是有关Stack Overflow的问题(例如,hereherehere)。

老实说,即使你是一名专家Win32程序员,我也会说你应该解决默认行为无论如何。即使您认为它不是理想的,也是您的用户习以为常的。他们系统上的所有其他应用程序都以这种方式运行。

答案 1 :(得分:1)

好的,我不是专家,但试试这个(VB NET 2013)。创建一个按钮并插入以下代码:

 Private Sub btnMaximize_Click(sender As Object, e As EventArgs)
 Handles btnMaximize.Click
     btnMaximize.Image = Image.FromFile("C:\Resources\ResbtnRestore.png")
     If Me.WindowState = FormWindowState.Maximized Then
         Me.WindowState = FormWindowState.Normal
         btnMaximize.Image = Image.FromFile("C:\Resources\ResbtnMaximize.png")
     Else
         Me.WindowState = FormWindowState.Maximized
    End If
End Sub

btnMaximize是您当前的按钮标题。

要使其完美,请将按钮属性设置为:

ButtonStyle = UltraFlat
[+] Image= C:\Resources\ResbtnMaximize.png (Import new file)
    Image Location: MiddleCenter
Text = (Fill Blank/No Text)
[+] Behavior
    AllowFocus = False
[+] Layout
    Anchor = Top, Right

然后调整按钮大小以适合图像并向右移动按钮。您还需要首先创建透明图像(.png)或至少从inet下载。