2010-06-15 2 views
1

Я показываю мой MDI окно внутри основной формы, но в одной части панели разветвителя, как это:каскад MDI формы панели Разветвителя

Form2 f2= new Form2(); 
    f2.MdiParent = this; 
    f2.Parent = this.splitContainer2.Panel2; 
    f2.Show(); 

но проблема заключается в том, что я не могу каскад их, если Я пишу код вроде этого:

this.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade); 

«это» является родительской формой. основная форма.

Можете ли я их каскадировать?

спасибо всем.

ответ

0

Вам придется переопределить LayoutEngine для панели SplitContainer. У Microsoft есть хороший пример here для создания настраиваемого механизма компоновки.

private void CascadeToolStripMenuItem_Click(object sender, EventArgs e) { 
     //LayoutMdi(MdiLayout.Cascade); 
     Rectangle bounding = this.splitContainer1.Panel1.DisplayRectangle; 
     Point nextFormLocation = bounding.Location; 
     foreach (Control c in this.splitContainer1.Panel1.Controls) { 
      if (!c.Visible) { 
       continue; 
      } 

      nextFormLocation.Offset(c.Margin.Left, c.Margin.Top); 

      c.Location = nextFormLocation; 
      c.BringToFront(); 

      if (c.AutoSize) { 
       c.Size = c.GetPreferredSize(bounding.Size); 
      } 

      nextFormLocation.X = bounding.X + 20; 

      nextFormLocation.Y = bounding.Y + 20; 

     } 
    } 

просто добавьте вышеуказанный код к каскадной кнопке, и вы получите основы каскада.

+0

Хорошо, спасибо. но все еще не ясно, как заставить CaseCade работать? :( – Bohn

+0

hmm ... я не могу ответить кодом, поэтому я собираюсь добавить еще один ответ – Buildstarted

+0

очень ценю. – Bohn

Смежные вопросы