我无法让儿童表格与父母一起居中。我一直在尝试各种各样的建议,从使用或不使用ShowDialog到各种糟糕的“计算你的表格的位置”代码。
我认为这真的不应该那么复杂。
无论如何,这里有一些代码。下面的代码是我实例化表单并要求它打开的地方。此代码中的this
是MainForm。
FormName myForm = new FormName();
myForm.ShowDialog(this);
我已将表单的StartPosition
设置为CenterParent
,但如果我移动MainForm并重新打开表单,则不会跟随。事实上,无论如何,它都保持在正确的位置。它甚至不是中心屏幕!
在表单的构造函数中,我没有设置任何形式的位置。
我也没有在表单的Load方法中设置表单位置的任何内容。
请帮忙!
编辑: 我已经尝试单步执行构造函数并加载表单的方法,看看他们是否在完成之前进行了救助,并且工作正常。
答案 0 :(得分:4)
事实证明,将代码添加到表单的构造函数是一个坏主意,并导致各种奇怪的行为。相反,应该在Form Load事件上添加表单的代码。这是我问题的根源。
答案 1 :(得分:0)
以下代码适用于我:
var MainForm = new Form();
var SubForm = new Form {
StartPosition = FormStartPosition.CenterParent,
Width = 200,
Height = 200,
};
MainForm.MouseClick += (sender, args) => { SubForm.ShowDialog(MainForm); };
MainForm.Show();
当您双击MainForm时,它会打开以它为中心的SubForm。然后当你关闭子窗体并移动MainForm时,再次双击MainForm时,SubForm再次显示为MainForm的居中。