2012-06-20 6 views
0

부모 mdi 창에 두 개의 자식 창을 열고 닫을 수 있습니다. 부모는 최대화로 시작하고 아이들이 부모의 경계를 넘지 않도록하여 아이들이 항상 스크린에서 100 %가되도록하십시오.C# 부모 창에 자식 폼 포함

부모 (MDI)를 최대화 나는 아이들 (창 양식) 창이 화면에 머물하지 모니터 외부 드래그 할 수 있도록하려면된다. 기본적으로 화면에서 끌 수 없도록 어린이를 막는 법.

의견이 있으십니까?

protected override void OnMove(EventArgs e) 
{ 
    // 
    // Get the MDI Client window reference 
    // 
    MdiClient mdiClient = null; 
    foreach(Control ctl in MdiParent.Controls) 
    { 
     mdiClient = ctl as MdiClient; 
     if(mdiClient != null) 
      break; 
    } 
    // 
    // Don't allow moving form outside of MDI client bounds 
    // 
    if(Left < mdiClient.ClientRectangle.Left) 
     Left = mdiClient.ClientRectangle.Left; 
    if(Top < mdiClient.ClientRectangle.Top) 
     Top = mdiClient.ClientRectangle.Top; 
    if(Top + Height > mdiClient.ClientRectangle.Height) 
     Top = mdiClient.ClientRectangle.Height - Height; 
    if(Left + Width > mdiClient.ClientRectangle.Width) 
     Left = mdiClient.ClientRectangle.Width - Width; 
    base.OnMove(e); 
} 

당신의 MDI 자식 폼에 추가 :

+1

프레임 MDI 창이 최대화되고 MDI 하위가 두 개인 경우? MDI 자식 인 경우 MDI 부모 경계를 넘을 수 없습니다. –

답변

2

This은 당신의 문제에 대한 해답이 될 수 있습니다. 더블 버퍼링이 켜져 있어도 조금 깜박이지만, 내가 찾은 최고의 솔루션입니다.

+0

정말 고마워요, 제가 정확히 찾고있는 것이에요. – Mike

관련 문제