问题是每个控件都有它自己的双击事件,所以如果你双击例如你的表单上的面板,你的表单的双击事件不会被解雇。
但是,您可以添加一个MessageFilter,例如,
Public Class Minimizer
Implements IMessageFilter
Private Const WM_LBUTTONDBLCLK As Integer = &H203
ReadOnly _form As Form
Public Sub New(f As Form)
_form = f
End Sub
Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
If m.Msg = WM_LBUTTONDBLCLK Then
_form.WindowState = FormWindowState.Minimized
End If
Return False
End Function
End Class
和一个小测试:
Private Sub Main()
Dim f = New Form()
f.Controls.Add(New Panel() With { .Dock = DockStyle.Fill })
Application.AddMessageFilter(New Minimizer(f))
f.ShowDialog()
End Sub
但我认为这将是一个奇怪的用户体验,如果双击的形式最大限度地减少任何地方...
你有代码在resize事件做点什么?你是否设置了休息时间,并在dbl单击时查看该行是否执行?这看起来不像Form Dbl Click(参数不正确),那么你想要dbl单击的对象是什么? – Plutonix
这工作得很好。它取决于你点击的内容,当你用其他控件覆盖它时,并不总是可能的。考虑到用户不太可能会发现这可以自行工作,最好在窗口的标题栏上粘贴正常的MinimizeBox。 –
@ plutonix即使我交换了msgbox的最小窗口状态doule点击dosnt seam o触发消息框......在任何情况下,表格不会调整大小 –