我有两种形式。Form2
正在被打开Form1
, 像这样:
Form2.ShowDialog();
StartPosition
of Form2
配置为centerParent
.
我需要固定位置Form2
在 Form1 的中心,这样当我移动时Form2
, Form1
也改变了它的位置。我尝试了很多解决方案但没有成功。
调用 ShowDialog 函数时必须包含父引用,但还必须记录初始位置差异before使用 LocationChanged 事件。
Form2 f2 = new Form2();
f2.StartPosition = FormStartPosition.CenterParent;
f2.ShowDialog(this);
然后在对话框中,您可以像这样连接它:
Point parentOffset = Point.Empty;
bool wasShown = false;
public Form2() {
InitializeComponent();
}
protected override void OnShown(EventArgs e) {
parentOffset = new Point(this.Left - this.Owner.Left,
this.Top - this.Owner.Top);
wasShown = true;
base.OnShown(e);
}
protected override void OnLocationChanged(EventArgs e) {
if (wasShown) {
this.Owner.Location = new Point(this.Left - parentOffset.X,
this.Top - parentOffset.Y);
}
base.OnLocationChanged(e);
}
此代码不执行任何错误检查,仅是演示代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)