我试图详细说明完整的表单是否在屏幕上可见。为了澄清这一点:我不在乎表单是否被另一个表单部分或完全隐藏,我只想知道表单是否完全在屏幕上。
在 Windows 中,可以四处移动表单,这样它们就可以隐藏一半。那是因为您可以将它们移动到任何监视器的实际边界之外。 (进一步向左、向右或底部。)如何以简单的方式检查是否是这种情况?
我想我能做的是检查表单是否在 SystemInformation.VirtualScreen
的范围内。 .这里的问题是,并非虚拟屏幕的每个像素实际上都是可见的。当然,如果 SystemInformation.MonitorCount = 1
这会起作用
不过我对此并不满意。
最佳答案
Public Function IsOnScreen(ByVal form As Form) As Boolean
Dim screens() As Screen = Screen.AllScreens
For Each scrn As Screen In screens
Dim formRectangle As Rectangle = New Rectangle(form.Left, form.Top, form.Width, form.Height)
If scrn.WorkingArea.Contains(formRectangle) Then
Return True
End If
Next
Return False
End Function
关于vb.net - 检查表单是否在所有屏幕的范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14383514/