【问题标题】:How to use close button as minimize in vb.net?如何在 vb.net 中使用关闭按钮作为最小化?
【发布时间】:2014-01-28 13:56:50
【问题描述】:

我正在尝试使用关闭(交叉)按钮作为最小化按钮。这与我们在 Skype 中看到的完全一样。

我知道我们可以通过将 ControlBox 属性设置为 false 来简单地禁用关闭按钮,或者我们可以通过创建参数来禁用。但是我希望关闭按钮应该是可见的、启用的并且可以工作,只是工作应该是最小化!

请帮忙!

提前致谢!

【问题讨论】:

  • 这是WinForms? 如果是则处理关闭事件msdn.microsoft.com/en-us/library/…
  • 感谢您花大量时间搜索我,但我想这是不同的,这是在表单关闭时保存文本框的文本,但我只是希望当我们单击关闭按钮时,表单不会关闭而是最小化(就像在 Skype 中一样)。

标签: vb.net


【解决方案1】:

这就是 FormClosing 事件可以帮助您做的事情。 非常重要的是您负责任地使用它并且不要阻止用户关闭他的机器。或者被唠叨说你的程序没有运行,这是这些天更典型的结果。您必须注意窗口关闭的原因。因此:

Protected Overrides Sub OnFormClosing(e As FormClosingEventArgs)
    If e.CloseReason = CloseReason.UserClosing Then
        Me.WindowState = FormWindowState.Minimized
        e.Cancel = True
    End If
    MyBase.OnFormClosing(e)
End Sub

【讨论】:

  • 嗯.. 我当然可以将其添加到 roryap 告诉的先前代码中。
【解决方案2】:

如果这是 WinForms,您可以处理 FormClosing 事件来完成此操作并将 e.Cancel 设置为 true,这样在您最小化后表单实际上不会关闭:

Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Me.WindowState = FormWindowState.Minimized
    e.Cancel = True
End Sub

与使用 Closing 事件的 WPF 类似:

Private Sub Window_Closing(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    Me.WindowState = Windows.WindowState.Minimized
    e.Cancel = True
End Sub

【讨论】:

  • 很高兴我能帮上忙。保重。
  • 嗨,它有效。但它使命令“me.close()”不起作用。
  • @TonyTong -- 在您调用 me.close() 之前,设置一个布尔值。然后在 FormClosing 事件处理程序中,查询该值以确定您是否以编程方式关闭。
猜你喜欢
  • 1970-01-01
  • 2018-08-11
  • 2015-10-16
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
相关资源
最近更新 更多