2009-10-07 7 views
0

MDI 상위를 만들 때 양식의 전체 "내부"가 MDI 영역이됩니다.C# : MDI 자식이 포함 된 영역을 변경하는 방법?

MDI 부모에 menustrip을 추가하면 MDI 영역이 약간 축소되어 조정자를위한 공간이 생깁니다.

하지만 패널을 MDI 상위의 맨 위에 추가하면 내부 전체가 여전히 MDI 영역입니다. 즉, MDI 어린이를 패널 뒤로 옮기고 제목 줄을 숨길 수 있습니다. menstrip 뒤에 MDI 자식을 이동하면 스크롤 막대가 나타나고 위쪽으로 스크롤하여 제목 줄에 액세스 할 수 있습니다. 그러나 스크롤바는 menustrip 대신 패널을 사용할 때 나타나지 않습니다. MDI 지역은 패널에 대해 알지 못하기 때문에 나는 생각합니다.

주어진 Y 값 아래에서 시작하도록 MDI 영역의 크기를 조정하려면 어떻게해야합니까?

답변

0

글쎄 그 부족은 .Net의 MDI 부모/컨테이너 창을 수정할 수 없다는 것입니다. 윈도우가 여전히 존재하고 정말로 원한다면 Win32 API로 찾을 수 있습니다.

그러나 목표로 설명하는 것은 할 수 있습니다. 코드가 없기 때문에 나는 당신의 잘못하고 무엇을 말할 수 있지만, 다음은이 작업을 보여줍니다 csharptest.net를 잘하고, 하나는 MDI 영역을 변경할 수 없습니다

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 값이 패널 높이보다 낮은지 확인하여 해결했습니다. 나는 그것을 좋아하지 않는다. –

0

경우, 내가 찾은를 두 가지 방법이 있습니다 :

  1. 여러 개의 MenuStrip 개체를 추가합니다 (각 개체는 부모 폼의 MDI 영역을 24 픽셀 아래로 이동시킵니다).
  2. MDI 자식의 LocationChanged 이벤트를 사용하고 Y 값이 아래에 유지하려는 경계보다 큰지 수동으로 확인하십시오.
관련 문제