有没有办法让 Windows 窗体应用程序全屏显示并关闭辅助监视器?所以主显示器在你的主显示器上,而你所有的其他显示器都是全黑的?
问问题
5817 次
3 回答
4
您可以使用 Screen 类,它为您提供有关当前活动屏幕的信息。
// Form myFrm
Rectangle r = new Rectangle();
foreach (Screen s in Screen.AllScreens)
{
if ( s != Screen.CurrentScreen ) // Blackout only the secondary screens
r = Rectangle.Union(r, s.Bounds);
}
myFrm.Top = r.Top;
myFrm.Left = r.Left;
myFrm.Width = r.Width;
myFrm.Height = r.Height;
myFrm.TopMost = true; // This will bring your window in front of all other windows including the taskbar
于 2012-06-18T22:12:38.727 回答
1
我可以想到一种方法,那就是找出计算机上有多少个显示器,以及它们相对于彼此的布局,然后在 0,0 创建主窗口,将其最大化并将其设置为 TopMost,然后对其他显示器执行相同的操作,将它们放置在与计算机每个显示器的左上角相对应的屏幕位置。
我能想到的唯一能在 WinForms 环境中从中受益的是一个旨在提供测试的应用程序;该应用程序将覆盖整个桌面(任务栏除外;您必须禁用“开始”菜单),并且几乎可以确保用户除了测试程序之外什么都看不到。它将为您提供最小的性能优势。
大部分黑屏的app除了主屏外,基本上都是用DirectX直接控制屏幕(通过显卡的底层接口)。如果您使用 WinForms 来制作您的程序,那么您的抽象级别比使用 DirectX 高出大约 50 级。
于 2012-06-18T22:15:13.940 回答
0
一种方法是在您的应用程序中创建第二个表单。一个,当给定一组尺寸时,将打开没有边框或菜单,并且背景设置为黑色。
当你的应用程序运行时,枚举你的监视器(数一下看看有多少)并找到它们的尺寸。你的主要从 0,0 开始。然后为您的每个监视器(除了您的主要监视器)生成第二个表单的副本,并为该表单提供监视器的尺寸。然后他们会将每个屏幕变黑。
您需要记住保留每个表单的句柄,并在终止主表单时终止它们。
于 2019-08-02T13:56:02.337 回答