Winform同时显示在所有现有监视器上(它是一个警报窗口)

bob*_*bob 1 c# multiple-monitors winforms setbounds

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

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

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

如何确保在双监视器方案中"附加"监视器上显示表单?

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

我还需要关闭其中一个按钮时钟的所有表格,但是现在我只想在所有显示器上显示它们.

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

Say*_*yka 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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

.

.

.

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

void button1_click (object sender, EventArgs e)
{
    showMsgOnAllScreens("Warning.. Something's burning..!!");
}
Run Code Online (Sandbox Code Playgroud)