C# 코딩중... TableLayoutPanel의 컨트롤 삭제가 너무 느려서
여기저기 구글링을 하면서 찾아본 결과 TableLayoutPanel의 자식 컨트롤 삭제 시 속도 저하는 어쩔 수 없다는 듯한 결론을 얻게 됐는데... 이게 맞는지 모르겠네요.
다른 컨트롤에서 하는 것처럼 SuspendLayout 후 해봐도 안 되고...
제일 처음 찾은 답변인 RowStyles, ColumnStyles를 모두 제거한 후 해보라는 대로 해봐도 안 되고...
결국 제일 확실해 보이지만 끝까지 하기 싫었던, Remove 전 Hide시키고 Remove 후 Show시키는 방법을 써서 해결했습니다.
문젠 이렇게 하면 컨트롤이 깜빡인다는 거죠. tlpMain 상위의 폼은 수시로 업데이트되기 때문에 Suspend시킬 수도 없는 상황. 답답합니다. 혹시 이 글을 보신 개발자 분 중 C#에서 TableLayoutPanel의 자식 컨트롤을 랙 없이 삭제하는, Hide/Show를 제외한 방법을 알고 계신 분이 있다면 알려주시길 바라봅니다.
다른 컨트롤에서 하는 것처럼 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를 제외한 방법을 알고 계신 분이 있다면 알려주시길 바라봅니다.
댓글
댓글 쓰기