프로그래밍/C#

[C#] DevExpress WinForms GridView 속도 개선 팁 – 렌더링 최적화 & 클릭 지연 해결

큐레이트 2025. 3. 24. 12:26

[WinForms] DevExpress GridView 속도 개선 팁 – 렌더링 최적화 & 클릭 지연 해결

DevExpress의 GridView는 강력한 기능을 제공하지만, 데이터가 많아지면 속도 저하렌더링 지연, Row 클릭 시 딜레이 같은 문제가 발생할 수 있습니다.

이 글에서는 실무에서 직접 적용했던 GridView 성능 최적화 팁을 구체적인 코드와 함께 소개하겠습니다.


✅ 1. BeginUpdate / EndUpdate로 렌더링 최소화

여러 UI 변경을 한꺼번에 적용할 때는 반드시 BeginUpdate()EndUpdate()로 감싸서 중간 렌더링을 막아야 성능이 좋아집니다.


gridView.BeginUpdate();
try
{
    gridControl.DataSource = GetData(); // 데이터 바인딩
}
finally
{
    gridView.EndUpdate();
}

주의: EndUpdate()finally 블록에서 반드시 호출하세요.


✅ 2. RowCellClick 안에서 데이터 접근 최소화

RowCellClick 또는 FocusedRowChanged 이벤트에서 GetRowCellValue를 반복 호출하면 성능이 저하될 수 있습니다.


// 성능 저하 예시
var val1 = gridView.GetRowCellValue(e.RowHandle, "ColumnA");
var val2 = gridView.GetRowCellValue(e.RowHandle, "ColumnB");

개선 방법: GetRow로 한 번에 캐스팅한 후 필드 접근


// 최적화 예시
var row = gridView.GetRow(e.RowHandle) as MyModel;
if (row != null)
{
    var val1 = row.ColumnA;
    var val2 = row.ColumnB;
}

→ 특히 Row 클릭 시 팝업을 띄우거나 쿼리를 호출한다면 비동기 처리(Task.Run)도 고려하세요.


✅ 3. Column 정렬 & 필터 성능 최적화

컬럼 정렬이나 필터 기능이 많을수록 렌더링이 느려질 수 있습니다.
필요 없는 컬럼은 AllowSort, AllowFilter를 꺼주세요.


gridView.Columns["ColumnA"].OptionsColumn.AllowSort = DefaultBoolean.False;
gridView.Columns["ColumnA"].OptionsFilter.AllowFilter = false;

→ 정렬/필터가 꼭 필요한 컬럼만 켜놓는 것이 성능에 좋습니다.


✅ 4. AutoWidth, BestFitColumns 피하기

BestFitColumns()는 모든 셀의 크기를 측정하기 때문에 데이터가 많을 경우 매우 느려집니다.

→ 대안: 화면 너비 기준으로 컬럼 크기를 수동으로 설정하거나, 최소한 일부 컬럼만 BestFit


// 느려질 수 있는 코드
gridView.BestFitColumns(); 

// 대안
gridView.Columns["Name"].BestFit();

✅ 5. 실시간 이벤트 남발 방지

CellValueChangedRowChanged 이벤트에서 매번 디비 호출, 로직 실행은 렌더링에 영향을 줄 수 있습니다.

→ 최소한 값이 실제로 변경된 경우에만 동작하도록 처리


private void gridView_CellValueChanged(object sender, CellValueChangedEventArgs e)
{
    var newValue = e.Value?.ToString();
    var oldValue = gridView.GetRowCellValue(e.RowHandle, e.Column.FieldName)?.ToString();

    if (newValue != oldValue)
    {
        // 변경된 경우에만 처리
        UpdateToDatabase(newValue);
    }
}

📌 마무리

DevExpress GridView는 매우 강력하지만, 속도 최적화는 반드시 필요합니다.
위의 팁들을 프로젝트에 적용하면 화면 전환 속도, 클릭 반응성, 스크롤 성능이 눈에 띄게 향상됩니다.

앞으로도 WinForms + DevExpress 실무 팁을 계속 공유할 예정이니, 도움이 되셨다면 공감 / 댓글 부탁드립니다 😊

반응형