1

我有一个用作警报系统的小型应用程序,我使用表单作为出现在屏幕上的警报,因为它们更加通用和消息框。由于警报的性质,我需要它出现在所有当前连接的监视器的中心。我现在只显示在主监视器上。

我在这里看过这两个帖子:

在辅助显示器上显示 Windows 窗体?

在双显示器方案中,如何确保表单显示在“附加”显示器上?

但我真的无法理解它,我已经查看了 Screens.AllScreens 属性,但仍然无法更好地理解如何告诉表单出现在哪个监视器上,甚至更进一步地让它出现在多个监视器上,因为我假设我需要通过 AllScreens 数组进行 foreach 循环。

我还需要从其中一个上的按钮时钟关闭所有表单,但现在我只想将它们放在所有显示器上。

很抱歉问一个我觉得大多数人认为已经回答的问题。

4

1 回答 1

6

这个对我来说很完美..

首先创建一个带有标签的警报表单。设置 label1 属性 -> Modifier = public

在此处输入图像描述

void showMsgOnAllScreens(string msg)
    {
        for (int i = 0; i < Screen.AllScreens.Length; i++)
        {
            AlertForm alert = new AlertForm();
            alert.label1.Text = msg;
            alert.StartPosition = FormStartPosition.Manual;
            alert.Location = new Point(
                Screen.AllScreens[i].Bounds.Left + (Screen.AllScreens[i].Bounds.Width / 2 - alert.Width / 2),
                Screen.AllScreens[i].Bounds.Height / 2 - alert.Height / 2);
            alert.Show();
        }
    }

.

.

.

现在只需调用该方法即可在所有屏幕上显示消息..

void button1_click (object sender, EventArgs e)
{
    showMsgOnAllScreens("Warning.. Something's burning..!!");
}
于 2014-09-02T17:49:55.327 回答