C# 如何在C中找到应用程序正在运行的屏幕#

C# 如何在C中找到应用程序正在运行的屏幕#,c#,winforms,screen,C#,Winforms,Screen,如何确定我的应用程序运行在哪个屏幕上?嗯,我不认为有一种内置的方法可以做到这一点,但这应该不太难确定。使用该类查找所有屏幕,循环浏览该列表,并将其边界与表单的位置进行比较 下面是一些未经测试的代码 Screen [] screens = Screen.AllScreens; for(index = 0; index < screens.Length; index++) { if (screens[index].Contains(this.Bounds)) ret

如何确定我的应用程序运行在哪个屏幕上?

嗯,我不认为有一种内置的方法可以做到这一点,但这应该不太难确定。使用该类查找所有屏幕,循环浏览该列表,并将其边界与表单的位置进行比较

下面是一些未经测试的代码

Screen [] screens = Screen.AllScreens;

for(index = 0; index < screens.Length; index++) {
     if (screens[index].Contains(this.Bounds))
        return screens[index];
}
Screen[]screens=Screen.AllScreens;
对于(索引=0;索引
System.Windows.Forms.Screen类提供此功能

例如:

屏幕s=屏幕。起点(p)


其中p是应用程序中的某个点(在屏幕坐标中)。

这应该可以让您开始。在表单上获取一个按钮和一个列表框,并将其放入按钮中。单击:

listBox1.Items.Clear();
foreach (var screen in Screen.AllScreens)
{
    listBox1.Items.Add(screen);
}
listBox1.SelectedItem = Screen.FromControl(this);            

答案在最后一行,记住表单也是控件。

查看以下链接:


这些都在WinAPI中。可能存在.NET多个监视器库/api调用,但如果没有,您可以使用这些函数编写自己的函数。

好吧,多年过去了,这是公认答案的派生,但这对我来说很有效。此方法是Form类的成员。
screen
变量包含调用方法时窗体左上角打开的屏幕属性

private void ClsFormFoo_Load(object sender, EventArgs e)
{
    Screen screen = Screen.FromControl(this);
}
screens.Contains()-是您想要的,如果是这样,您不需要查看它们。。。。