StartPosition CenterScreen doesn't work after resizing the Form in Form.Load
在表单加载事件中,我动态地向表单添加了一些控件。
我使用此代码调整表单的大小以使其大小适应其新内容:
1 2 3 | this.MaximumSize = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); this.AutoSize = true; this.AutoSizeMode = AutoSizeMode.GrowAndShrink; |
它工作正常,但
表格中心位置是根据原始尺寸计算的。
我的建议是使用它的 PreferredSize 属性来调整表单的大小。当您将新控件添加到表单并且这些控件不适合客户区域时,将更新
然后使用 CenterToScreen() 方法将窗体居中到当前屏幕。
Hans Passant 在评论中建议的
CenterToParent() 如果表单不是任何其他表单的父级,则具有相同的效果:即,如果它没有使用
设置
请注意,如果您的应用程序不是 DpiAware,则屏幕尺寸和您的表单大小可能与预期不同。如果不是,请在此处阅读:
Windows 窗体中的高 DPI 支持
这些关于屏幕和虚拟屏幕的注释也可能有用:
所以,将您的控件添加到表单(可能在
1 2 3 4 | var screen = Screen.FromHandle(this.Handle); this.MaximumSize = new Size(screen.WorkingArea.Width, screen.WorkingArea.Height); this.ClientSize = this.PreferredSize; this.CenterToScreen(); |