vb.net - 检查表单是否在所有屏幕的范围内

标签 vb.net winforms

我试图详细说明完整的表单是否在屏幕上可见。为了澄清这一点:我不在乎表单是否被另一个表单部分或完全隐藏,我只想知道表单是否完全在屏幕上。

在 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/

相关文章:

.net - 在 .NET 中创建 SCADA 图

linux - 使用 VB.NET 将文档加载/保存到 SFTP Linux 服务器

vb.net - 而是以字节数组发送多个十六进制

c# - 在列表框中插入具有特定颜色的项目

c# - 检查是否选择了特定的标签页(事件)

c# - 调整控件大小时 Winforms 自动滚动丢失

c# - 从 html 文档中提取 html 片段

vb.net - 如果在其中一个线程中检测到错误,则停止所有线程

c# - 运行位于 PATH 环境变量目录中的应用程序

c# - 当我选择路径名时,如何从文本框中的组合框中获取选定的数据库名称