반응형
C# -- listview, panel 에서 double buffered, ResizeRedraw Extension 사용하기
참고 : http://stackoverflow.com/a/15268338
http://stackoverflow.com/a/29438857
http://www.codeproject.com/Articles/3567/Flicker-free-ListView-in-NET-and-XP
답변 ;
버퍼를 2개 만들어 한꺼번에 Switch하는 방식으로 더블버퍼링을 사용하면 Flicker현상을 막을 수 있습니다.이를 위해 DoubleBuffered 라는 속성을 true로 설정하면 되는데, 이 속성이 protected라서 아래와 같이 Reflection을 사용하는 확장메서드를 작성한 후,
public static class Extensions {
public static void DoubleBuffered(this Control control, bool enabled)
{
var prop = control.GetType().GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
prop.SetValue(control, enabled, null);
}
}
리스트뷰에서 속성을 아래와 같이 지정합니다
listView1.DoubleBuffered(true);
--
< 소스 >
반응형
'C#' 카테고리의 다른 글
C# -- String, char, byte 변환하기 (0) | 2016.02.12 |
---|---|
C# -- MaskedTextBox -- 주민등록번호 입력 적용 (0) | 2016.02.10 |
c# -- Npgsql 이용하여 postgresql 접속하기 (1) | 2015.08.19 |
C# -- 인쇄 #3 -- printing preview (1) | 2015.08.17 |
C# -- 인쇄 #2 -- print preview dialog (0) | 2015.08.17 |