SuspendLayout() : 윈폼(Windows Forms)에서 폼이나 컨트롤의 레이아웃 논리를 일시 중지하는 메서드. 컨트롤들을 추가하거나 위치, 크기를 변경할 때 불필요한 리렌더링과 깜빡임을 방지하고 성능을 향상시키기 위해 사용된다.
🧠 요약 정의
this.SuspendLayout();
this.panel1.SuspendLayout();
- 컨트롤의 레이아웃 계산을 일시 중단
- 다수의 속성 변경, 컨트롤 추가 작업 후 ResumeLayout()으로 다시 활성화
🧩 언제 사용하나요?
- 여러 컨트롤을 한꺼번에 추가하거나 수정할 때
- 폼 로딩 시 많은 UI 변경이 있을 때
- 레이아웃 중복 계산을 방지하고 속도 및 깜빡임을 줄이고 싶을 때
✅ 예시
this.SuspendLayout();
Button btn1 = new Button();
btn1.Text = "Button1";
btn1.Location = new Point(10, 10);
Button btn2 = new Button();
btn2.Text = "Button2";
btn2.Location = new Point(10, 50);
this.Controls.Add(btn1);
this.Controls.Add(btn2);
this.ResumeLayout(); // 기본값 false (자동 레이아웃 갱신 X) True로 설정하면 바로 레이아웃 갱신
this.PerformLayout(); // 레이아웃 강제 적용
또는 한 줄로도 많이 쓴다:
this.ResumeLayout(true); // true면 PerformLayout()을 자동 호출함
🔄 관련 메서드 요약
메서드 설명
| SuspendLayout() | 레이아웃 로직 일시 중단 |
| ResumeLayout() | 레이아웃 로직 다시 시작 |
| PerformLayout() | 수동으로 레이아웃 강제 적용 |
💡 실전 팁
- SuspendLayout()은 Controls.Add(), Size, Location, Dock, Anchor 등을 여러 번 설정할 때 wrapping해서 사용하면 좋다.
- ResumeLayout(true)만 써도 대부분의 경우 충분하다.
- 모든 컨트롤 수정이 끝난 후에만 ResumeLayout() 호출해야 제대로 동작한다.
'C#' 카테고리의 다른 글
| C# | 디자인패턴 싱글톤 (0) | 2025.06.05 |
|---|---|
| [C#] 비모달- Show() 과 모달-ShowDialog() 의 차이 (0) | 2025.05.22 |
| [ C# ] ToolStripContainer 컨트롤 - 윈폼 레이아웃 컨테이너 컨트롤 (0) | 2025.05.22 |
| C# 인터넷 또는 제한 영역에 있거나 파일에 웹 표시가 있으므로 처리할 수 없습니다. (0) | 2025.05.15 |
| C# 윈폼 소스코드만 보이고 디자인 안 열릴 때 (0) | 2024.09.05 |