【问题标题】:.NET/WinForms: maximize a window on a specific screen.NET/WinForms:最大化特定屏幕上的窗口
【发布时间】:2010-12-24 21:23:06
【问题描述】:

我有一个双显示器设置,我希望我的 c# 应用程序在特定屏幕上最大化其窗口。

我该怎么做?

谢谢!

【问题讨论】:

标签: .net windows winforms maximize


【解决方案1】:
  Public Shared Sub MoveForm(Item As Form, ScreenNumber As Integer, Optional X As Integer = 0, Optional Y As Integer = 0)
    With Screen.AllScreens(ScreenNumber).Bounds
      X -= .Left 'translate overall coordinates to screen coordinates
      Y -= .Top
    End With
    Item.Location = New System.Drawing.Point(X, Y)
  End Sub

【讨论】:

    【解决方案2】:

    这是我的一个项目中类似范围的屏幕管理代码:

            // screenId in my case is 1(first) or 2(second)
            int screenId = RegistryManager.ScreenId;
            // DualScreen management            
            if (screenId > 0)
            {
                // Have 2 screens
                if (System.Windows.Forms.Screen.AllScreens.Length == 2)
                {
                    if (screenId == 1) // first
                        this.Location = new System.Drawing.Point(System.Windows.Forms.Screen.AllScreens[0].Bounds.Left, 0);
                    else // second
                        this.Location = new System.Drawing.Point(System.Windows.Forms.Screen.AllScreens[1].Bounds.Left, 0);
                }
            }
    

    【讨论】:

      【解决方案3】:

      您使用 Screen 类来查找第二个监视器 link

      找到代码here

      function void showOnMonitor2()
      {
      Screen[] sc;
      sc = Screen.AllScreens;
      //get all the screen width and heights
      Form2 f = new Form2();
      f.FormBorderStyle = FormBorderStyle.None;
      f.Left = sc[1].Bounds.Width;
      f.Top = sc[1].Bounds.Height;
      f.StartPosition = FormStartPosition.Manual;
      f.Location = sc[1].Bounds.Location;
      Point p = new Point(sc[1].Bounds.Location.X, sc[1].Bounds.Location.Y);
      f.Location = p;
      f.WindowState = FormWindowState.Maximized;
      f.Show();
      }
      

      【讨论】:

      • 您需要进行一些错误检查以确保屏幕超过 1 个。
      • 是的,我知道,这只是一个复制粘贴来展示它是如何工作的。使用其他代码时,应始终应用和检查任何健全性检查
      【解决方案4】:

      您可以通过在最大化之前将窗口一直向右或向左移动来实现此功能。这应该会导致窗口在最大化时最大化到该屏幕。

      【讨论】:

      • 如果您在移动窗口后也将窗口设置为可见,则此方法有效。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 2017-11-24
      相关资源
      最近更新 更多