2012-04-04 3 views
2

는 바보 같은 질문 같은데,하지만 난 다음 ("나"가있는 MDIParent 양식)를 시도 :MDIParent의 오른쪽 아래 구석에 MDIChild 양식을 배치하는 방법은 무엇입니까?

Dim frmNotif As New frmNotifica 
With frmNotif 
    .MdiParent = Me 
    .StartPosition = FormStartPosition.Manual 
    .Location = New Point(ClientSize.Width - .Width, ClientSize.Height - .Height) 
    .Show() 
End With 

을했지만 작동하지 않습니다.

아이디어가 있으십니까?

+0

"작동하지 않음"은 끔찍한 진단입니다. 전형적인 문제는 Aero가 창 주위에 두는 뚱뚱한 경계입니다. appcompat 이유로 창 크기가 잘못되었습니다. 거기에 깨끗한 수정, 크기에 4를 추가 Q & D 수정입니다. –

+0

"작동하지 않음"은 의도 한대로 배치되지 않았다는 것을 의미합니다. –

답변

2

당신이 "빈"MDI 부모 폼을 (더 패널 또는 TOOLSTRIPS 도킹 없음)이 가정이 작동합니다 :

Dim frmNotif As New frmNotifica 
With frmNotif 
    .MdiParent = Me 
    .StartPosition = FormStartPosition.Manual 

    Dim leftStart As Integer = Me.ClientSize.Width - (.Width + (SystemInformation.Border3DSize.Width * 2)) 
    Dim topStart As Integer = Me.ClientSize.Height - (.Height + (SystemInformation.Border3DSize.Height * 2)) 

    .Location = New Point(leftStart, topStart) 
    .Show() 
End With 

당신이 ToolStrip에이 MDIParent에 추가 패널 또는이있는 경우, 당신은해야 할 것입니다 당신의 등식에 영향을 미칩니다.

+2

두 가지 문제점 :이 코드는 자동 재조정이 완료되도록 양식의 Load 이벤트 처리기에서 실행해야합니다. 그리고 Border3DSize 해킹은 XP에서 작동하지 않거나 Aero가 꺼져있는 경우 작동하지 않습니다. –

+0

많은 감사합니다! 이것은 내 실제 문제를 해결합니다. 내가 곧있을 문제는 : 오른쪽 아래 모서리에 표시하고 싶은 특정 양식이 경계선이없는 경우 어떻게됩니까? SystemInformation.Border3DSize는 모든 시스템에 대한 양식 테두리의 표준 크기입니다 ... 거기에 표시하려는 양식의 유형을 모두 확인해야합니다 :-) –

+0

@AndreaAntonangeli Hans Passant의 의견에 유의합니까? . 이 솔루션은 모든 상황에서 작동하지 않을 수도 있습니다. 아동 양식의 포지셔닝이 신청서에 결정적이라면 MDI가 최선의 방법이 될 수 없습니다. – LarsTech

관련 문제