对于窗体,使用的事件为UserForm_Layout()
如以下语句可以使窗体不会跑到屏幕的外面:
Private Sub UserForm_Layout()
If Me.Left ThisDrawing.Application.WindowTop + ThisDrawing.Application.Height - Me.Height Then
Me.top = ThisDrawing.Application.WindowTop + ThisDrawing.Application.Height - Me.Height
End If
If Me.Left > ThisDrawing.Application.WindowLeft + ThisDrawing.Application.Width - Me.Width Then
Me.Left = ThisDrawing.Application.WindowLeft + ThisDrawing.Application.Width - Me.Width
End If
Debug.Print "窗口距左侧距离" & Me.Left
Debug.Print "窗口距顶部距离" & Me.top
End Sub
可惜调来调去还是有问题,可能窗体中使用的单位与应用程序使用的单位不同所致,但又不知怎么转换(大家想想办法)。
另外,应用程序的WindowMovedOrResized(HWNDFrame, Moved)事件也必须使用,不然到时主程序窗口变了,你的窗体还停留在原来的位置是不对的。