c# - 是否有现成的方法可以确定事件窗口位于多个屏幕中的哪一个?

标签 c# .net winforms desktop

我正在尝试从 Screen 对象的 Screen.AllScreen 数组中查找哪个屏幕包含事件窗口,以便我可以使用该屏幕来显示新窗口。

我能想到的最好方法是 pinvoke 来获取前台事件窗口,然后以某种方式从该对象中找到某种屏幕位置,然后将该点与屏幕对象区域数组进行比较,看看它是否包含在那里。左上角就足够了,我将忽略事件窗口同时显示在多个显示器上的可能性。

是否有更简单的方法可以避免 pinvoke 的 getforegroundwindow 和包含点迭代搜索?

最佳答案

只需使用静态方法 Screen.FromHandle() 即可获取包含事件表单最大部分的屏幕(通过 Handle),如下所示:

Screen scr = Screen.FromHandle(GetForegroundWindow());

还有 3 个静态方法可以从 ControlPointRectangle 获取 Screen

关于c# - 是否有现成的方法可以确定事件窗口位于多个屏幕中的哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17736747/

相关文章:

c# - 构建 azure Pipeline 中的某些库时出现 "nuget restore"问题

c# - XmlSerializer - 将 xml 文件迁移到新版本的最佳方式

c# - 你如何 PerformClick();对于不同选项卡上的按钮?

c# - 从线程中的 GUI 对象检索属性

c# - 调用 UserControl 不起作用

c# - 如何删除名称中的特殊字符,如 Frédéric?

c# - 内存映射文件.openExisting : specified file not found when using 2 different process

c# - 当与 ILMerge 或 SmartAssembly 等工具合并时,内部类是否会变为私有(private)类?

.net - 如何为 TripleDESCryptoServiceProvider 生成强加密 key

.net - null == null 吗?