C#MDI儿童表格 - 大小占工作区域的一半

时间:2014-04-01 12:34:26

标签: c# resize mdi window-resize mdichild

我们正在为我们的计划使用MDI。

是的,我知道,使用别的东西,MDI很糟糕等等......客户对UI的MDI风格更加满意,所以我们坚持这一点。到目前为止,我们发现无论如何都不需要像TDI或SDI那样的东西。

我们希望能够做的一件事就是自动将MDI子项的大小设置为MDI客户区域大小的一半;类似于在Windows 7/8中你可以将窗口拖到屏幕的一侧,它会调整大小以填充桌面的一半。

我该怎么做?

为了澄清,我不是在寻找对接,显然重新调整表单很容易,我更感兴趣的是当用户将表单拖到MDI客户端区域的边缘时如何捕获,并以某种方式集中化那个逻辑所以我不会在每种形式上都重复它。显示表单最终结束的轮廓也很愉快(再次,类似于Win7 / 8调整大小)。

由于

1 个答案:

答案 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);
  }
}
相关问题