[.net] DataGridView에서 DoubleBuffered 속성의 기본값이 false로 설정된 이유는 무엇입니까?


Answers

나는 그 최선의 해결책이라고 생각한다.

typeof(DataGridView).InvokeMember(
   "DoubleBuffered", 
   BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty,
   null, 
   myDataGridViewObject, 
   new object[] { true });

여기 에서 발견

Question

다시 그리기가 너무 느리고 DataGridView에서 성능 문제가있었습니다. 여기 에서 파생 형식을 만들고 컨트롤에서 이중 버퍼링을 사용할 수있는 솔루션을 발견했습니다. DoubleBuffered 속성이 보호되어 있으므로 파생 된 형식이 필요합니다.

DoubleBuffered 속성을 true로 설정하면 아무런 단점이없는 것처럼 보입니다.




정의에 의한 이중 버퍼링은 컨트롤보기를 렌더링하기 위해 두 개의 버퍼와 두 배의 메모리를 사용합니다. 그래서, 거기에 몇 가지 단점이있다, 그러나, 지금은 PC에 많은 양의 사람들이 희생을 눈치 채지 못할 것입니다.

그 이유는 알지 못합니다. 어쩌면 컨트롤의 초기 버전에서는이 기능을 사용할 수 없었을 것이고, 소개되었을 때 디자이너는 컨트롤의 공용 인터페이스를 변경하고 싶지 않았을 것입니다. 아니면 고급 기능이라고 생각하고 컨트롤을 처음 사용하는 사람이 뭔가 유용한 기능을 수행 할 수 있도록 방법을 제한해야했습니다.




Links