2009-10-07 52 views
0

創建MDI父項時,表單的整個「內部」將成爲MDI區域。C#:如何更改包含MDI子項的區域?

如果將菜單條添加到MDI父級,則MDI區域會縮小一點以爲菜單條騰出空間。

但是,如果您將面板添加到MDI父級的頂部,則整個裏面仍然是MDI區域。這意味着您可以將MDI兒童移動到面板後面,並隱藏他們的標題行。如果您將MDI兒童移動到菜單欄後面,則會出現滾動條,您可以向上滾動以訪問標題行。但是當您使用面板而不是菜單條時,滾動條不會顯示。因爲MDI地區不瞭解面板,我想。

如何縮放MDI區域以低於給定的Y值?

回答

0

那麼它的缺點是你不能修改.Net中的MDI父/容器窗口。窗口仍然在那裏,如果你真的想要,你可以用Win32 API來找到它。

但是,您描述的目標是可行的。由於沒有任何代碼,我不能告訴你做錯了什麼,但下面演示了這種工作:

public class Form1 : Form 
{ 
    static void Main(string[] args) { Application.Run(new Form1()); } 

    public Form1() 
    { 
     this.IsMdiContainer = true; 
     Panel test = new Panel(); 
     test.Dock = DockStyle.Top; 
     test.Height = 100; 
     this.Controls.Add(test); 

     Form child = new Form(); 
     child.MdiParent = this; 
     child.Text = "Child"; 
     child.Show(); 
    } 
} 
+0

謝謝。我通過添加一個OnLocationChanged事件來解決它,並檢查Y值是否低於面板的高度。不過,我不喜歡它。 – 2009-10-08 08:24:28

0

如果csharptest.net是正確的,一個不能改變的MDI區域,我發現兩種方法:

  1. 添加多個MenuStrip對象(其中每個對象都將MDI區域在父窗體上向下移動24個像素)。
  2. 使用MDI兒童的LocationChanged事件,並手動檢查其Y值是否大於您希望將它們保留在下面的邊框。