正如我毫不怀疑,尼尔答案将工作花一点时间来实现它,我能够做我想要多一点优雅与此代码:
Private Sub myWindow_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChanged
Dim primaryBounds As System.Drawing.Rectangle = Windows.Forms.Screen.PrimaryScreen.Bounds
Dim windowBounds As System.Drawing.Rectangle = New System.Drawing.Rectangle(CInt(Me.Left), CInt(Me.Top), CInt(Me.Width), CInt(Me.Height))
If (windowBounds.Left < 0) Then
windowBounds = New System.Drawing.Rectangle(0, windowBounds.Top, windowBounds.Width, windowBounds.Height)
ElseIf (windowBounds.Right > primaryBounds.Right) Then
windowBounds = New System.Drawing.Rectangle(primaryBounds.Right - windowBounds.Width, windowBounds.Top, windowBounds.Width, windowBounds.Height)
End If
If (windowBounds.Top < 0) Then
windowBounds = New System.Drawing.Rectangle(windowBounds.Left, 0, windowBounds.Width, windowBounds.Height)
ElseIf (windowBounds.Bottom > primaryBounds.Bottom) Then
windowBounds = New System.Drawing.Rectangle(windowBounds.Left, primaryBounds.Bottom - windowBounds.Height, windowBounds.Width, windowBounds.Height)
End If
Me.Left = windowBounds.Left
Me.Top = windowBounds.Top
End Sub
本作被拖动的窗口会停留在主窗口(整个窗口)内,但您可以轻松地将边界更改为所需的任何值。
我在说拖动窗口周围的窗口,而不是重新调整它的大小。想想在屏幕上设置一个区域,即使屏幕较大,也只允许窗口四处移动。像拖曳容器是我能想到的最好的。 – ScottN 2009-02-20 07:13:37
我坐在这里再读一遍,想知道我是否问了这个问题,以及我怎么会认为我是在谈论窗口大小而不是拖动,我甚至没有提到“大小”或“重新大小”这个词我的问题... – ScottN 2009-02-20 07:18:15
拖动边界?我认为它默认是可拖动的。你想拖动像Windows窗体中的那些句柄吗? – 2009-02-20 15:11:37