【问题标题】:How do I determine which monitor my winform is in?如何确定我的 winform 在哪个监视器中?
【发布时间】:2010-09-24 23:55:41
【问题描述】:

我一直在这个网站上下,发现了很多关于 Screen 类的信息,以及如何计算监视器的数量等等,但是我如何确定表单当前处于哪个监视器?

【问题讨论】:

    标签: c# .net winforms .net-3.5 .net-2.0


    【解决方案1】:

    比使用边界更简单的方法是使用 Screen.FromControl() 方法。这与 Windows 使用的功能相同。

    Screen.FromControl(this)
    

    将为包含您调用它的大部分表单的屏幕返回屏幕对象。

    【讨论】:

      【解决方案2】:

      这应该对你有用:

      private Screen FindCurrentMonitor(Form form) 
      { 
          return Windows.Forms.Screen.FromRectangle(new Rectangle( _
              form.Location, form.Size)); 
      } 
      

      它将返回包含大部分表单的屏幕。 Alternativley,你可以使用

      return Windows.Forms.Screen.FromPoint(Form.Location);
      

      返回包含表单左上角的屏幕。

      【讨论】:

        【解决方案3】:

        我确实注意到了这一点,但我希望有更优雅的东西(来自 .net 而不是来自你。) 因此,根据您的建议,我这样做了:

            foreach (Screen screen in System.Windows.Forms.Screen.AllScreens)
            {
                if (screen.Bounds.Contains(this.Location))
                {
                    this.textBox1.Text = screen.DeviceName;
                }
            }
        

        【讨论】:

          【解决方案4】:

          每个 Screen 对象都有一个 Bounds 属性,您可以使用该属性来查找屏幕占据的坐标,只需检查表单的位置即可。

          【讨论】:

            猜你喜欢
            • 2010-11-10
            • 2013-06-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-01
            • 1970-01-01
            • 2018-01-02
            • 1970-01-01
            相关资源
            最近更新 更多