기초 메모지

C# - 윈도우 폼(Win Form) - 데이터 그리드 뷰(DataGridView) 버퍼 본문

Languages/C#

C# - 윈도우 폼(Win Form) - 데이터 그리드 뷰(DataGridView) 버퍼

라큐브 2021. 11. 1. 01:44

WinForm의 기본 컨트롤은 외부 라이브러리 없이도 UI를 구성할 수 있도록 도와준다.

그러나 엑셀과 같은 데이터 시트를 표현할려면 DataGridView 컨트롤이 필수인데 가장 큰 단점이 있다...

- 부자연스러운 스크롤

- 스크롤 시 깜박임

 

즉, 배포용 소프트웨어로 사용하기 부적절하다.

Dev Express, Spread 같은 외부 라이브러리를 사용하는 이유

자본주의의 위대함!

 

하지만 외부 라이브러리의 큰 단점인 참조, 라이센스 비용이 발목을 잡는다. 

 

DataGridView 한정해서 애물단지인 WinForm 기본 컨트롤

 

저 문제만 해결하면 외부 라이브러리 없이 기본 컨트롤 만으로 충분하지 않을까?

고민하다가 찾게된 방법이 "DoubleBuffered" 속성이다.

 

void ApplyDataGridViewDoubleBuffer(DataGridView gridView){
typeof(DataGridView).InvokeMember("DoubleBuffered", System.Reflection.BindingFlags.NonPublic |System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty, null, gridView, new object[] { true });
}

사용법은 위 메소드를 추가하고 인자"DoubleBuffered" 속성를 적용할 "DataGridView" 명칭을 넣어주면 된다. 

 

 

DataGridView DoubleBuffered 속성 적용과 미적용의 차이

 

반응형
Comments