5

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

4

5 回答 5

6

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

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

答案在最后一行,记住 Form 也是 Control。

于 2009-02-14T20:53:03.957 回答
1

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

例如:

屏幕 s = Screen.FromPoint(p);

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

于 2009-02-14T20:52:57.093 回答
0

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

这是一些未经测试的代码

Screen [] screens = Screen.AllScreens;

for(index = 0; index < screens.Length; index++) {
     if (screens[index].Contains(this.Bounds))
        return screens[index];
}
于 2009-02-14T20:51:56.270 回答
0

看看这些链接:

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

于 2009-02-14T20:54:45.747 回答
0

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

private void ClsFormFoo_Load(object sender, EventArgs e)
{
    Screen screen = Screen.FromControl(this);
}
于 2019-07-23T14:41:03.670 回答