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

时间:2009-02-14 20:34:08

标签: c# winforms screen

如何确定运行我的应用程序的屏幕?

5 个答案:

答案 0 :(得分:6)

这应该让你开始。在Form上获取一个Button和一个列表框,并将其放在Button_Click:

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

答案在最后一行,请记住Form也是一个控件。

答案 1 :(得分:1)

System.Windows.Forms.Screen类提供此功能。

例如:

屏幕s = Screen.FromPoint(p);

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

答案 2 :(得分:0)

嗯,我认为没有内置的方法可以解决这个问题,但不应该太难确定。使用Screen类查找所有屏幕,遍历该列表并将其边界与表单的位置进行比较。

这是一些未经测试的代码

Screen [] screens = Screen.AllScreens;

for(index = 0; index < screens.Length; index++) {
     if (screens[index].Contains(this.Bounds))
        return screens[index];
}

答案 3 :(得分:0)

看一下这些链接:

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

答案 4 :(得分:0)

嗯,已经过去了很多年,它是公认的答案的派生词,但这对我有用。此方法是Form类的成员。 screen变量包含调用该方法时窗体左上角所在的屏幕的属性。

private void ClsFormFoo_Load(object sender, EventArgs e)
{
    Screen screen = Screen.FromControl(this);
}