본문 바로가기
Program/C# .NET

[C#] MetroTabControl 왼쪽 상단에 스크롤바 없애기 (Winform)

by 냠만 2024. 7. 22.

[Metro UI]

기본적으로 MFC기반의 프로그램을 구성할 때 드래그 앤 드롭방식을 많이 채택합니다. 그러나 프레임워크에서 제공하는 컨트롤은 정말 기본적인 형태만 유지하고 있는 경우가 많습니다. 이에 따라서 컨트롤을 현대적인 디자인으로 꾸미기 위해서는 테마를 구성하거나 별도 유저컨트롤에서 직접 구현하여 참조시키는 방법을 사용해야 합니다.

 

이런 번거로움을 어느정도 해결해 주는 무료 UI 프레임이 있는데 이게 바로 Metro UI입니다.

Metro UI는 마이크로소프트가 사용한 UI 프레임워크로 사각형 타일을 기반으로 한 디자인입니다. 별도 유저컨트롤을 구현하지 않고 Nuget을 통하여 설치 가능하며 기존 컨트롤과 동일하게 드래그엔 드롭 방식으로 인터페이스를 구현할 수 있도록 도와줍니다.

 

Nuget에서 설치할 때 정확한 명칭은 MetroModernUI입니다. 참고하시면 될 것 같습니다.

[MetroTabControl 문제 해결]

그중 제가 잘 활용하는 부분이 TabControl인데요. 기존에 있는 TabControl과는 다르게 선택된 애니메이션도 고급스럽게 표현해 주고 테마도 기본적으로 밝은 것과 어두운 것을 제공해서 별도로 ForeColor BackColor 설정하지 않아도 된다는 점이 좋았습니다. 그리고 기본 디자인보다는 확실히 세련되어있다는 생각이 드는 디자인입니다.

그런데 컨트롤탭을 구현하다 보면 디버그시에 왼쪽 상단에 스크롤바가 생성되는 경우가 있습니다.

Tab Page를 넘어가는 컨트롤을 할당한 것도 아니고 단순 Panel을 할당해서 옵션을 Dock = Fill로 변경하면 해당 문제가 발생됩니다.

Tab Page 옵션에서 Scoll bar visible 옵션을 False처리해도 동일하게 발생됩니다. 해결방법은 간단합니다.

Tab Page 속성에서 ScrollBarSize를 0 값으로 조정해 주면 됩니다.

Scrollbar는 세로 가로 두 가지가 있으니 속성 옵션에서 모두 0으로 설정하시면 됩니다.

아직까지 밝혀진 원인이나 위 방법이 아닌 해결방법은 없는 걸로 알고 있습니다. 이런 자잘한데 거슬리는 버그는 패키지단에서 수정 가능할 것으로 보이는데 수정될 기미는 보이지 않아서 임시로 이렇게 사용해야 될 것 같습니다.

가장 베스트는 직접 컨트롤을 구성하는 일인데 항상 시간이 문제죠.