如何在设置了窗体的最大值和最小值的情况下,点窗体的最大化按钮又能最大化到整个桌面屏幕的大小。

pyy167 2008-09-22 03:01:26
比如说,已经按如下设置了窗体的最大值和最小值:
Me.MaximumSize = New System.Drawing.Size(500, 500)
Me.MinimumSize = New System.Drawing.Size(300, 300)

但点了窗体的最大化按钮后,又能最大化到整个屏幕的大小。但拖放时,又要让它在最大值和最小值的范围内。
我做了如下处理,是不对的。不知道应该怎么做啊?高手请多多指教啊!
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.MaximumSize = New System.Drawing.Size(500, 500)
Me.MinimumSize = New System.Drawing.Size(300, 300)
End Sub
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Me.WindowState = FormWindowState.Normal Then
Me.MaximumSize = New System.Drawing.Size(500, 500)
ElseIf Me.WindowState = FormWindowState.Minimized Then
Me.MaximumSize = New System.Drawing.Size(500, 500)
ElseIf Me.WindowState = FormWindowState.Maximized Then
Me.MaximumSize = New System.Drawing.Size(0, 0)
End If
End Sub
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pyy167 2008-09-22
  • 打赏
  • 举报
回复
搞定了,分享一下:
Protected Overrides Sub WndProc(ByRef m As Message)
If (m.Msg = &H112) Then
If (CInt(m.WParam) = &HF030) Then
Me.MaximumSize = Size.Empty
Me.MinimumSize = Size.Empty
End If
End If
MyBase.WndProc(m)
End Sub

Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Me.WindowState = FormWindowState.Maximized Then
Else
Me.MaximumSize = New System.Drawing.Size(500, 500)
Me.MinimumSize = New System.Drawing.Size(300, 300)
End If
End Sub
pyy167 2008-09-22
  • 打赏
  • 举报
回复
把MyBase.WndProc((m))改成MyBase.WndProc(m)就对了:)
不过还有一点问题啊,这样的话,我点了一次最大化按钮以后,变成屏幕大小了。
再点一下,照理说应该是还原成之前的大小的,可现在再一点以后,变成Size(300, 300)了。

pyy167 2008-09-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hbxtlhx 的回复:]
在你的代码里添加如下的代码试试看:

VB.NET code
Protected Overrides Sub WndProc(ByRef m As Message)
If (m.Msg = &H112) Then
If (CInt(m.WParam) = &HF030) Then
Me.MaximumSize = Size.Empty
Me.MinimumSize = Size.Empty
ElseIf (CInt(m.WParam) = &HF120) Then
Me.MaximumSize = New Size(500, 500)
Me.MinimumSize = New Size(300, …
[/Quote]
这个一运行就异常了。
北京的雾霾天 2008-09-22
  • 打赏
  • 举报
回复
在你的代码里添加如下的代码试试看:

Protected Overrides Sub WndProc(ByRef m As Message)
If (m.Msg = &H112) Then
If (CInt(m.WParam) = &HF030) Then
Me.MaximumSize = Size.Empty
Me.MinimumSize = Size.Empty
ElseIf (CInt(m.WParam) = &HF120) Then
Me.MaximumSize = New Size(500, 500)
Me.MinimumSize = New Size(300, 300)
End If
End If
MyBase.WndProc((m))
End Sub
pyy167 2008-09-22
  • 打赏
  • 举报
回复
不是要这样的效果,这样的话,在拖动的时候,其实是先拖大了,然后再把大小改变,效果不好。
要做成拖都不能拖的样子。
wjq 2008-09-22
  • 打赏
  • 举报
回复
那就不要设MaximumSize 了,直接写Resize事件,
If Me.WindowState = FormWindowState.Normal Then
If Me.Width>500
Me.Width=500
End If
If Me.Height>500
Me.Height=500
End If
End If

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧