2011-01-28 3 views
4

DataGridView에 최대 100,000 개의 행이있는 테이블을 표시하고 있습니다. 테이블에는 큰 문자열을 포함하는 하나의 열이 있습니다. AutosizeMode를 'AllCells'로 설정하면 응용 프로그램이 오랫동안 멈추고 필요한 너비가 계산됩니다. 타협으로서 Autosize 모드를 DisplayedCells로 설정했습니다. 나는 다음 데이터 그리드의 스크롤 이벤트에 방법을 결합 :C# DataGridView AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells

public void MethodThatBindsDataToTheDatagridview(DataTable table) 
{ 
    dataGrid.Source = table; 
    dataGrid.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; 
    dataGrid.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; 
} 

pubic void DataGridScroll(object sender, ScrollEventArgs e) 
{ 
    ((DataGridView)sender).Update(); 
} 

는 또한 새로 고침 방법과 동일했습니다. 내 기대는 DataGrid 표시되는 행에 따라 열 너비를 설정합니다. 그러나 테이블이로드 될 때이 한 번만 발생하지만 scroll 이벤트는 열 너비의 변경을 트리거하지 않습니다.

dataGrid.AutoResizeColumn(1, DataGridViewAutoSizeColumnMode.DisplayedCells); 
dataGrid.AutoResizeColumn(2, DataGridViewAutoSizeColumnMode.DisplayedCells); 

답변

5

당신이해야 할 것입니다. 그렇게하면 코드를 나중에 추가 할 수있는 모든 열에도 적용됩니다.

놀랍게도 과부하 AutoResizeColumns()는 AutoSizeMode 설정에 따라 각 열의 크기를 조정하지 않고 AllCells 설정을 사용하여 모든 열의 크기를 조정합니다.

+0

문제가 해결되었습니다. 감사. – Yoav