"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > DatagridView를 자주 업데이트 할 때 깜박임을 방지하는 방법은 무엇입니까?

DatagridView를 자주 업데이트 할 때 깜박임을 방지하는 방법은 무엇입니까?

2025-03-23에 게시되었습니다
검색:240

How to Prevent Flickering When Frequently Updating a DataGridView?

플래시없이 DatagridView를 자주 업데이트합니다

질문:

특히 업데이트 속도가 높고 셀 수가 많을 때 DataGridView를 실시간으로 새로 고쳐줍니다. 깜박임 및 지연과 같은 시각적 결함이 발생하기 쉽습니다.

분석 :

더블 버퍼링 기술은 오프 스크린 버퍼를 사용하여 이러한 문제를 해결합니다.

해결책:

반사 또는 서브 클래싱 방법을 통해 DatagridView의 이중 버퍼링 기능을 활성화합니다.

서브 클래싱 메소드

DataGridView의 서브 클래스를 생성하고 DoubleBuffered 속성을 노출시킵니다 :

public class DBDataGridView : DataGridView
{
    public new bool DoubleBuffered
    {
        get { return base.DoubleBuffered; }
        set { base.DoubleBuffered = value; }
    }

    public DBDataGridView()
    {
        DoubleBuffered = true;
    }
}

이 클래스를 프로젝트에 추가하고 DoubleBuffering을 True로 설정합니다.

반사 방법

반사를 사용하여 프로그래밍 방식으로 DoubleBuffering을 설정합니다.

using System.Reflection;

static void SetDoubleBuffer(Control ctl, bool DoubleBuffered)
{
    typeof(Control).InvokeMember("DoubleBuffered",
        BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty,
        null, ctl, new object[] { DoubleBuffered });
}

SetDoubleBuffer를 호출하여 DataGridView의 더블 버퍼링을 전환합니다.

DoubleBuffering을 활성화하여 DatagridView는 오프 스크린 버퍼를 사용하여 업데이트를 그려 자주 업데이트하는 동안 깜박임 및 말더듬을 줄입니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3