我们正在为我们的计划使用MDI。
是的,我知道,使用别的东西,MDI很糟糕等等......客户对UI的MDI风格更加满意,所以我们坚持这一点。到目前为止,我们发现无论如何都不需要像TDI或SDI那样的东西。
我们希望能够做的一件事就是自动将MDI子项的大小设置为MDI客户区域大小的一半;类似于在Windows 7/8中你可以将窗口拖到屏幕的一侧,它会调整大小以填充桌面的一半。
我该怎么做?
为了澄清,我不是在寻找对接,显然重新调整表单很容易,我更感兴趣的是当用户将表单拖到MDI客户端区域的边缘时如何捕获,并以某种方式集中化那个逻辑所以我不会在每种形式上都重复它。显示表单最终结束的轮廓也很愉快(再次,类似于Win7 / 8调整大小)。
由于
答案 0 :(得分:1)
你正处于一个受伤的世界。
但这是如何开始:
Form f = new Form();
f.ResizeEnd += f_ResizeEnd;
f.MdiParent = this;
f.Show();
void f_ResizeEnd(object sender, EventArgs e) {
MdiClient mc = this.Controls.OfType<MdiClient>().First();
Form f = sender as Form;
if (f.Right >= mc.ClientSize.Width) {
f.SetBounds(mc.ClientSize.Width / 2, 0,
mc.ClientSize.Width / 2, mc.ClientSize.Height);
}
}