2010-02-16 4 views
1

저는 C# VS2005 .net 2.0으로 개발 된 Windows 응용 프로그램에서 datagridview를 사용하고 있습니다.DataGridview가 매우 천천히 다시 그립니다.

Datagridview에는 비즈니스 개체 목록이 제공됩니다. 그것은 떨어지는 커튼 방식으로 DataGridview에서 행을 표시하기 시작하기 전에 2-3 초의 성가신 지연을 취합니다. 다른 창에서 내 응용 프로그램으로 다시 전환하면 동일한 하향 - 커튼 방식으로 다시 칠하기 시작합니다. 이것은 매우 성가신 일입니다. Plz 누군가 나를 이것을 해결하는 데 도움이!

+0

당신이 문제와 게시물을 반복 최소에 코드를 줄일 수 있습니다 그것은 - 또는 단지 당신이 생각하는 것을 관련 섹션이라고 게시하십시오. – ChrisF

+0

가장 가능성있는 설명은 그리드를 다시 칠할 때마다 그리드를 다시 채우는 데 데이터 소스로 돌아가는 것입니다. – ChrisF

+1

그리드에 몇 행을 넣었습니까? –

답변

0

동일한 문제가 있습니다. GridView는 데이터 소스에 바인딩되지 않습니다. 나는 GridView를 직접 만들고있다. 크기를 조정 (확대)하거나 수직으로 스크롤 할 때 동일한 커튼 효과가 적용됩니다. 그것은 꽤 나쁘다. 100 또는 100000 행이있는 경우 효과는 동일합니다. DoubleBuffered를 true 또는 false로 설정 한 경우에도 동일합니다.

나는 무엇이 일어나고 있는지에 대한 단서를 찾기 위해 그물을 검색해 왔으며 지금까지는 아무것도 찾지 못했습니다. 이 실을 시작한 사람이 후속 조치를 취하지 않았거나 현재 답변을 얻지 못한 것이 너무 나쁩니다.

1

왜 작동하는지 모르지만 Double-Buffered로 DataGridView 컨트롤을 설정하면 절대적인 효과가 있습니다. 호스트 폼의 DoubleBuffered 속성도 false 여야합니다.

이렇게하면 그리드 컨트롤이 너무 천천히 다시 그리기 (데이터 볼륨에 관계없이)하여 셀을 셀 수있는 것으로 간주하여 다른 컨트롤처럼 빠르게 다시 그릴 수 있습니다.

당신은 예를 들어, 파생 클래스를 생성하고이 속성을 설정해야합니다 있도록 DoubleBuffered 속성은 DataGridView에에 보호 :

class DoubleBufferDataGrid : DataGridView 
{ 
    public DoubleBufferDataGrid() 
     : base() 
    { 
     this.DoubleBuffered = true; 
    } 
}