要在resize事件发生之前截获那条消息,需要通过继承form来实现, 在ProcessCmdKey里面实现/
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
Dim WM_KEYDOWN As Integer = 256 '消息响应的问题可以参考其他win32编程的文章
Dim WM_SYSKEYDOWN As Integer = 260
If ((msg.Msg = WM_KEYDOWN) Or (msg.Msg = WM_SYSKEYDOWN)) Then
。。。。
End If
End Function
把WM_KEYDOWN 换成你需要截获那条消息。然后返回TRue,表示这条消息已经处理过了。
想出了一个不完美的办法。
在子窗体的resize事件里写入
Private Sub frmStockBook_Resize(ByVal sender As Object, ByVal e As System.EventArgs)Handles MyBase.Resize
If Me.WindowState = FormWindowState.Maximized Then
Me.FormBorderStyle = FormBorderStyle.None
End If
End Sub
在closing事件里写入
Private Sub frmStockBook_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
If Me.WindowState = FormWindowState.Maximized Then
e.Cancel = True
End If
End Sub
Private blnCanClose As Boolean '是否可以关闭窗体 -true-- 可以
Private blnCanMinimum As Boolean '是否可以最小化 --true --可以
Private Sub frmBase_MaximumSizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.MaximumSizeChanged
blnCanClose = False
blnCanMinimum = False
End Sub
Protected Overrides Sub OnMinimumSizeChanged(ByVal e As System.EventArgs)
If blnCanMinimum = False Then Exit Sub
MyBase.OnMinimumSizeChanged(e)
End Sub
Private Sub frmBase_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
e.Cancel = blnCanClose
End Sub