C#.NET Q&A

동적으로 텍스트박스 생성시 느려지는 문제 질문.. 메로나 평점: 없음 조회: 489
테이블 레이아웃에 Label 2개, Textbox 1개가 든 유저컨트롤을 동적으로 약 50개 만들었습니다..
생성자에서 아래의 더블버퍼링을 추가했었구요..

this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);

좀 이상하다싶어 textbox부분을 Label로 변경하고 똑같이 돌려봤을때,
더블버퍼링이 먹히고 속도 또한 차이가 났습니다..

혹시 이와같은 경우 만드는 속도 개선하신분 계신가요..
 
태그 : 개선 동적 속도 텍스트박스 C#
작성자 정보
메로나
Level 12
 [EXP.6/40]

메일:  비공개
글등록 +12 96 덧글등록 +3 36
자기소개
Hi
글 공유하기 |
  tweet facebook
2017-01-09 오후 1:51:07
나도한마디
사용자
롬메달            [2017-01-09]
Level 43
 [EXP.72/100]
그건 동적으로 텍스트박스를 만들어서 생기는 문제가 아니라 TableLayoutPanel 자체적으로 생기는 문제입니다.

TableLayoutPanel에 컨트롤 50개 올려놓은거 자체적으로 이미 그 컨트롤이 엄청 무거워 집니다.

TablelayoutPanel 에 대한 속도 문제때문에 stackoverflow 같은곳에 많은 포스팅이 있으니 찾아보시면 속도 자체는 빨리 해결될 수 있을껍니다. 하지만 다른 문제가 있을 수 있으니 (Resizing속도는 빠르나 잔상 문제 등등) Test를 많이 해보세요
사용자
메로나            [2017-01-09]
Level 12
 [EXP.6/40]
http://stackoverflow.com/search?q=TableLayoutPanel+textbox+slow
아래와같이 검색 결과가 있었습니다ㅎㅎ
적용을 해봣지만 안됐습니다..
롬메달님 말씀처럼 컨트롤 자체가 무거워진 느낌이네요ㅠㅠ
50개 생성시간은 1~2초내외지만 잔상때문에 글을 쓴 것이었거든요..
Label과는 다르게 말이죠..더 시도해봐야겠습니다! 감사합니다^^
사용자
메로나            [2017-01-09]
Level 12
 [EXP.6/40]
동적으로 텍스트박스 만들때 1.8~2.0초이상이 걸리던걸 0.8~1.3초로 줄였습니다. 소스는 아래와 같습니다..
(컨트롤에 더블버퍼링 설정 했습니다.)

TableLayoutPanel1.Visible = false;
TableLayoutPanel1.SuspendLayout();

//동적으로 컨트롤 추가하는 부분

TableLayoutPanel1.ResumeLayout(false);
TableLayoutPanel1.Visible = true;


사용자
롬메달            [2017-01-09]
Level 43
 [EXP.72/100]
textbox 들이 생성되는데에 그 정도 시간이 걸리는것도 사실 문제입니다. 50개 정도 동적 생성해서 붙이는데 TableLayoutPanel이 아니고서는 1초도 걸리지 않을껍니다.

문제는 제가 말씀드린 tablelayoutpanel에 row와 column을 설정해서 그 각각에 textbox를 넣어서 tablelayoutpanel을 resizing 하는 순간에 나타납니다.

그래서 말씀하신 링크를 들어가서 두번째 질답을 보시면 user.dll를 통해서 Win API까지 직접 호출하여 사용하는 부분이 있습니다. 저걸 사용하시면 일단 속도는 굉장히 빨라집니다(1초도 걸리지 않습니다).

TableLayoutPanel 자체적으로 control을 많이 담을 수록 속도에 문제가 있다는것을 알기 때문에 Winform 개발자들은 어지간해서는 많은 control들을 저기에 담지 않습니다. 담을 수밖에 없으면 저렇게 Win API를 직접 호출해서 사용하는 방식으로 하는 분들이 많죠.

만약 회사 제품내에서 사용중이시라면 저부분에 이슈가 많을테니 많은 확인이 필요할것 같습니다.
태그로 엮인글
[구인&교육정보] (수원/개발) MES 제조업무 시스템 (중급)   한국정보데이터시스
[구인&교육정보] (수원/운영) IT 서비스데스크 (초급/중급)   한국정보데이터시스
[C#.NET Q&A] dateTime 비교 질문입니다.[3]  새내기
[C#.NET Q&A] c# 동기 소켓 재접속 문의입니다.  궁금해욥
[C#.NET Q&A] c# 동기 소켓 재접속 문의입니다.  궁금해욥
[C#.NET Q&A] wpf 이미지 삽입[2]  민개ㅑㅔㅂ;
[구인&교육정보] [구로디지털단지] 서비스 운영 ASP.NET 초~중급이상5명   자이몰
[C#.NET Q&A] c#으로 윈도우 프로그래밍 만들 때 클래스 다이어그램을 어떻게 그리나요?  kinect고생중
[WPF Q&A] TextBox 현재 입력글자 표시 색상 변경 방법[3]  YJS
[C#.NET Q&A] SelectionChanged 가 걸린 그리드에 붙여넣기가 안되는경우  넝약이
글리스트
panel에 외부프로그램을 붙이는 방법에 대한 문의[1]+4 파일첨부 samson
C# 그리드뷰 테두리 두께[1]+1  부분모델
C# 데이터 그리드 뷰에 검색값만 나타내기 질문[2]  개발입문자
treeview 동적 자식노드 할당  pangloss
listview의 선택영역에 관한 질문  이쿠욧
DB 컨넥트후 Listview 질문[1]  민뚱이
<질문> 시리얼통신 고속수신과정에러 및 폼간 데이터 송신방법  로얄스쿨생
datetime picker 월 혹은 년 별로 보이게 하는방법 있을까요 ?  훈스훈스훈스
c# 시리얼 포트 검색[2]  푸풋
C# DB연동으로 관리 프로그램 작성 질문[4]+9  개발입문자
 ★현재글->   동적으로 텍스트박스 생성시 느려지는 문제 질문..[2]+2  메로나
C#과 오라클 DB연동하여 수정과 삭제같이하는 방법 질문[2]+3  개발입문자
Winform 해상도 문제[1]+1  연후
c# 배열 질문[1]+3  푸풋
이미지위에 움직이는 선 그리고 싶습니다.[1]+1  바보쿠우
바탕화면 아이콘이나 탐색기에서 파일 클릭시 그 파일의 정보를 알수 있을까요??  대봉대봉
null이 아닌 객체 참조 시 NullReferenceException[1]  pangloss
windows server 2012 r1 버전 사용중 스레드  훈스훈스훈스
c# 질문[2]+1  푸풋
C# 화면 캡쳐 질문드립니다[1]+1  밀키스
C# MSSQL 연동질문 드립니다.  김군