C# 윈폼(WinForm) MDI 관련해서 질문드려요

MDI 폼을 구성해서 부모창 상단에는 메뉴를 구성 하단에는 브라우저(웹)를 나오게 구성을 했습니다.

원하는 메뉴를 선택하면 하단에 브라우저 나오는 부분에 자식 폼이 나와야 하는데 계속 브라우저 뒤에

나와서 가려지는데 해결할 방법이 없을까요???

(브라우저는 하단에 깔고(고정) 자식 폼들이 그 위에 나왔으면 합니다…)

좋아요 1

웹브라우저는 표준 컨트롤이 아니라서 다를 컨트롤들처럼 겹쳐서 표시가 안되고 무조건 최상단에 출력이됩니다.

좋아요 1

메인 폼 IsMdiContainer 속성을 true로 주면 메인 폼이 MDI 컨테이너가 됩니다. 이후에 컨테이너 영역에 MDI 자식 폼이 배치가 되는데요, 그 위에 WebView 컨트롤을 배치하면 자식 폼 위에 그려져서 원하는 결과를 얻기가 힘듭니다.

image

최선의 방안은, WebView 컨트롤을 담은 폼을 하나 만들고, Min, Max, ControlBox를 모두 false로 둔 후, 자식 폼을 추가하는 것입니다.

Add Mdi Child Form 메뉴를 클릭하면,

그런데, 어쨌든 웹뷰 컨트롤이 담긴 폼도 MDI 폼이므로, 오른쪽 상단의 MDI 기능 버튼을 누르면 다음처럼 원하지 않게 나올 것 같은데요,

이것은 MDI 관련 이벤트 및 속성을 적절히 이용한다면, 해결하실 수 있을것으로 생각합니다.

좋아요 2

또다른 방법으로는 MdiClient를 해킹(?) 하는 것입니다. IsMdiContainertrue로 주면 MDI 컨트롤을 배치할 수 있도록 MdiClient가 메인 폼의 Controls에 추가가 되는데요, 이놈의 배경에 웹뷰를 붙일 수도 있습니다.

이 방법은 개념은 아는데 직접 코딩해보지는 않아 저도 연구를 해봐야 하는데, 아마도… 구글 검색을 통해 답을 찾으실 수 있을 것 같네요.

좋아요 2

스샷에 친절한 설명에 추가 구현 개념까지 감사합니다. ^^

오늘도 으쌰으쌰 해보겠습니다. ^^!!

좋아요 2