2014-04-01 44 views
1

我们正在使用MDI作为我们的程序。C#MDI儿童形式 - 大小到工作区域的一半

是的,我知道,使用别的东西,MDI是坏的等等等等...客户端更习惯于MDI风格的用户界面,所以我们坚持这一点。到目前为止,我们发现无论如何都不需要TDI或SDI。

我们希望能够做的一件事就是自动调整MDI子项大小为MDI客户区大小的一半;有点类似于Windows 7/8中的方式,您可以将窗口拖到屏幕的一侧,并调整其大小以填满桌面的一半。

我该怎么做?

为了澄清,我不是在寻找停靠位置,并且明显地调整窗体大小非常简单,我更感兴趣的是当用户将窗体拖动到MDI客户区边缘时如何捕捉,并且以某种方式集中该逻辑,所以我不会在任何形式下复制它。显示表单最终位置的大纲也会很愉快(再次,类似于Win7/8调整大小)。

谢谢

回答

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); 
    } 
} 
+0

感谢。尽管最终我决定添加一些工具按钮来完成这项工作,而不是陷入形式移动/大小事件;事后看来,它似乎更符合逻辑。 –