4

我想在调用它的同一个窗口中显示一个新表单。我知道一种通过类似于以下代码在 PrimaryScreen 或 Virtual Screen 上显示此表单的方法:

MyForm.Location = Screen.PrimaryScreen.Bounds.Location;

但我想在当前屏幕上显示它。有没有办法找出并在当前屏幕上显示它?

4

6 回答 6

7

我做了这样的事情来显示我的表单以当前屏幕为中心:

var screen = Screen.FromPoint(Cursor.Position);
myForm.StartPosition = FormStartPosition.Manual;
myForm.Left = screen.Bounds.Left + screen.Bounds.Width / 2 - myForm.Width / 2;
myForm.Top = screen.Bounds.Top + screen.Bounds.Height / 2 - myForm.Height / 2;
于 2013-04-16T06:55:03.660 回答
5

您可以使用相同的技术,但不要使用 PrimaryScreen,而是使用Screen.FromPointCursor.Position抓取屏幕:

Screen screen = Screen.FromPoint(Cursor.Position);
MyForm.Location = screen.Bounds.Location;
于 2010-06-19T00:38:36.073 回答
1

It sounds like you aren't setting the StartPosition to Manual.

于 2011-03-30T14:55:52.063 回答
1

我知道这已经晚了,但仍然发布我的答案,希望它可以帮助其他人。经过几次尝试,我用 3 台显示器完成了这项工作

var currentScreen = Screen.FromControl(this);
        if (!currentScreen.Primary)
        {
            var hCenter = currentScreen.Bounds.Left + (((currentScreen.Bounds.Right - currentScreen.Bounds.Left) / 2) - ((Width) / 2));

            var vCenter = (currentScreen.Bounds.Bottom / 2) - ((Height) / 2);
            StartPosition = FormStartPosition.Manual;
            Location = new Point(hCenter, vCenter);
        }
        else
        {
            CenterToScreen();
        }
于 2019-11-04T01:46:43.017 回答
1
  1. 在设计模式下单击表单。
  2. 将 StartPosition 属性更改为 CenterScreen 。

这应该会在活动屏幕上打开表单。有关 StartPosition 的更多值,请参阅 此内容。

于 2016-01-21T09:45:27.353 回答
0

如果您已经有一个父窗体并想在同一屏幕上打开一个新窗体,请为 ShowDialog 方法提供对父窗体的引用:newForm.ShowDialog(this);如果没有所有者参数 (" this"),即使您的父窗体也可以在主屏幕上打开新窗体表格在另一个屏幕上。

于 2015-12-15T17:16:32.327 回答