我有一个MDI表单和一些子窗口。我将子窗口停靠在MDI的不同区域,但当每个窗体上的焦点丢失时,其他停靠的窗体将重新排列并且每个东西都会爆炸。由于问题混乱,我准备了一组图像来显示反应。
Image1,在点击任何表格之前:
Image2,点击W2后:
不同之处在于当最左侧停靠窗口获得焦点时,它会将其大小更改为MDI窗口的右端而不提及W1窗口。
如何解决此问题?感谢。
答案 0 :(得分:1)
还有另一个解决方法。一个非常快的例子是:
现在创建2个新窗体(Form 2和Form 3)。
现在,在Form1的main中,就在InitializeComponent()下面,添加:
Form2 f2 = new Form2();
f2.TopLevel = false;
f2.Dock = DockStyle.Fill;
panel1.Controls.Add(f2);
f2.Show();
Form3 f3 = new Form3();
f3.TopLevel = false;
f3.Dock = DockStyle.Fill;
panel2.Controls.Add(f3);
f3.Show();
这是一种稍微不同的方法,但它应该可以正常工作。
答案 1 :(得分:0)
您是否尝试在子表单的Resize方法(W2)上修改自己的大小?
//something like this
private void W2_Resize(object sender, EventArgs e)
{
Size pSize = this.ClientSize;
// Resize the form
}
或者也许使用Focus方法。 我不知道它是否会导致性能问题。