C#

[ C# ] ToolStripContainer 컨트롤 - 윈폼 레이아웃 컨테이너 컨트롤

채린.__. 2025. 5. 22. 11:21

System.Windows.Forms.ToolStripContainer

: WinForms에서 툴바(ToolStrip), 메뉴(MenuStrip), 상태 표시줄(StatusStrip) 등을 자동으로 분리된 영역에 배치할 수 있도록 도와주는 레이아웃 컨테이너 컨트롤


🧠  요약

ToolStripContainer는 다음과 같은 5개의 영역을 자동으로 제공하여 UI를 나눠준다:

+--------------------------------------+
| [TopToolStripPanel]                 |
+--------------------------------------+
|                                      |
| [ContentPanel] ← 본문 내용 위치     |
|                                      |
+--------------------------------------+
| [BottomToolStripPanel]              |
+--------------------------------------+

그리고 좌우도 가능:

| [LeftToolStripPanel]   ContentPanel   [RightToolStripPanel] |

🧩 구성 요소

구성요소 설명

TopToolStripPanel 상단에 ToolStrip, MenuStrip 등을 배치
BottomToolStripPanel 하단 상태 표시줄 배치 등
LeftToolStripPanel 좌측 도구 막대 배치
RightToolStripPanel 우측 도구 막대 배치
ContentPanel 애플리케이션의 주요 콘텐츠 (Form 내용) 표시 영역

🔨 사용 예제

ToolStripContainer container = new ToolStripContainer();
container.Dock = DockStyle.Fill;

ToolStrip toolStrip = new ToolStrip();
toolStrip.Items.Add("파일");
toolStrip.Items.Add("편집");

container.TopToolStripPanel.Controls.Add(toolStrip);

TextBox textBox = new TextBox();
textBox.Multiline = true;
textBox.Dock = DockStyle.Fill;

container.ContentPanel.Controls.Add(textBox);

this.Controls.Add(container); // 폼에 추가

이 구조로 하면 툴바는 자동으로 위에 고정되고, 텍스트박스는 그 아래 영역 전체를 차지한다.


✅ 언제 쓰면 좋은가?

  • 툴바/메뉴/상태바를 자동으로 깔끔하게 정렬하고 싶을 때
  • ToolStrip, MenuStrip, StatusStrip을 자유롭게 위, 아래, 좌, 우로 배치/이동하고 싶을 때
  • Dock = Top 등으로 수동 배치하는 것보다 더 유연한 레이아웃 구조가 필요할 때

📌 유용한 팁

  • ToolStripContainer는 ToolStrip 전용 컨테이너입니다. Panel이나 GroupBox처럼 일반 컨트롤을 다루기보단 도구막대 전용 구조
  • ToolStrip은 사용자가 마우스로 드래그해서 다른 Panel(Top → Left 등)로 이동시킬 수 있도록 설정할 수도 있다.

🎯 요약

장점 단점

툴바/메뉴/상태바 자동 배치 초보자에겐 구조가 다소 복잡할 수 있음
레이아웃 분리로 유지보수 용이 일반 컨트롤에 쓰기엔 과함
다양한 방향으로 배치 가능 Dock으로 충분하면 굳이 필요 없음