2014-04-01 70 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

感謝。儘管最終我決定添加一些工具按鈕來完成這項工作,而不是陷入形式移動/大小事件;事後看來,它似乎更符合邏輯。 –