C# 코딩중... TableLayoutPanel의 컨트롤 삭제가 너무 느려서

  여기저기 구글링을 하면서 찾아본 결과 TableLayoutPanel의 자식 컨트롤 삭제 시 속도 저하는 어쩔 수 없다는 듯한 결론을 얻게 됐는데... 이게 맞는지 모르겠네요.

  다른 컨트롤에서 하는 것처럼 SuspendLayout 후 해봐도 안 되고...
tlpMain.SuspendLayout();
foreach (Control ctrl in tlpMain.Controls) {
    tlpMain.Controls.Remove(ctrl);
}
tlpMain.ResumeLayout();


  제일 처음 찾은 답변인 RowStyles, ColumnStyles를 모두 제거한 후 해보라는 대로 해봐도 안 되고...
tlpMain.SuspendLayout();
tlpMain.RowStyles.Clear();
tlpMain.ColumnStyles.Clear();'
foreach (Control ctrl in tlpMain.Controls) {
    tlpMain.Controls.Remove(ctrl);
}
tlpMain.ResumeLayout();


  결국 제일 확실해 보이지만 끝까지 하기 싫었던, Remove 전 Hide시키고 Remove 후 Show시키는 방법을 써서 해결했습니다.
tlpMain.Hide();
//Remove childs...
tlpMain.Show();


  문젠 이렇게 하면 컨트롤이 깜빡인다는 거죠. tlpMain 상위의 폼은 수시로 업데이트되기 때문에 Suspend시킬 수도 없는 상황. 답답합니다. 혹시 이 글을 보신 개발자 분 중 C#에서 TableLayoutPanel의 자식 컨트롤을 랙 없이 삭제하는, Hide/Show를 제외한 방법을 알고 계신 분이 있다면 알려주시길 바라봅니다.

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

USB를 뒤는 괜찮은데 앞에 꽂으면 인식이 힘들다?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭