winforms 最好的窗口开始位置的形式,使他们在同一显示器上打开开始的形式是?

kpbpu008  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(127)

我的Windows窗体应用程序有很多窗体,它们经常被打开和关闭,我需要窗体总是在启动窗体当前所在的显示器上打开(在Application.Run()中指定的形式)。这就是我的应用程序的一贯行为,但自从从VS19迁移到VS22后,我无法再次获得相同的行为。我应该使用什么StartPosition或任何其他设置来实现这一点?

8i9zcol2

8i9zcol21#

找到了解决方案!这使得您当前正在打开的表单,在初始启动表单当前所在的同一显示屏上打开,并将其居中到该表单。本质上,它是手动创建CenterParent StartPosition,而无需处理Parents/Children。
下面是我打开主菜单表单的代码:

form = new MainMenu();
            form.Location = Program.getStartFormPoint(form.Width, form.Height);
            form.StartPosition = FormStartPosition.Manual;
            form.Show();

中间的两行是我为这个解决方案添加的。下面将是getStartFormPoint函数,在这个例子中我放置在我的Program.cs中。LoginScreen/loginForm是我在这个应用程序中的初始启动表单。与Application中使用的表单相同。在Main()下运行。

public static Point getStartFormPoint(int width, int height)
{
    var loginForm = Application.OpenForms.OfType<LoginScreen>().FirstOrDefault();
    Point thePoint = new Point((loginForm.Location.X + loginForm.Width / 2) - (width / 2), (loginForm.Location.Y + loginForm.Height / 2) - (height / 2));
    return (thePoint);
}

相关问题