从主表单(Form1)我调用显示另一个表单(Form2)。但我希望它显示与 form1 完全相同的位置和大小,这样我们就无法再看到 form1 了,直到我们关闭 form2 或将其移到其他地方。所以我写了这些行:
Form2 f2 = new Form2();
f2.Left = this.Left;
f2.Top = this.Top;
f2.Size = this.Size;
f2.Show();
Run Code Online (Sandbox Code Playgroud)
但它仍然存在问题。form2并不完全基于form1。我还应该在代码中添加其他内容吗?
是的,您的做法是错误的。仅当运行该表单的计算机具有完全相同的用户首选项、系统字体大小和视频 DPI 设置时,表单的实际尺寸才与设计尺寸相同。如果关闭很多,则 DPI 设置会有所不同。如果稍微偏离,则用户偏好不同。比如更大的标题栏字体或更大的按钮。使固定:
Form2 f2 = new Form2();
f2.Show();
f2.Left = this.Left;
f2.Top = this.Top;
f2.Size = this.Size;
Run Code Online (Sandbox Code Playgroud)
如果这太明显,那么您应该让 Form2 的 Load 事件执行此操作。传递对主窗体的引用或使用 Owner 属性和 Show(owner)。换句话说:
Form2 f2 = new Form2();
f2.Show(this);
Run Code Online (Sandbox Code Playgroud)
在表格2中:
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
this.Location = Owner.Location;
this.Size = Owner.Size;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8154 次 |
| 最近记录: |