첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ Control 클래스에서 컨트롤 페인팅을 보류하고 재개하는 방법을 보여준다.

 

▶ ControlHelper.cs

namespace TestProject;

/// <summary>
/// 컨트롤 헬퍼
/// </summary>
public class ControlHelper
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Private

    #region Field

    /// <summary>
    /// WM_SETREDRAW
    /// </summary>
    private const int WM_SETREDRAW = 0x000b;

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Static
    //////////////////////////////////////////////////////////////////////////////// Public

    #region 페인팅 보류하기 - SuspendPainting(control)

    /// <summary>
    /// 페인팅 보류하기
    /// </summary>
    /// <param name="control">컨트롤</param>
    public static void SuspendPainting(Control control)
    {
        Message message = Message.Create(control.Handle, WM_SETREDRAW, IntPtr.Zero, IntPtr.Zero);

        NativeWindow nativeWindow = NativeWindow.FromHandle(control.Handle);

        nativeWindow.DefWndProc(ref message);
    }

    #endregion
    #region 페인팅 재개하기 - ResumePainting(control)

    /// <summary>
    /// 페인팅 재개하기
    /// </summary>
    /// <param name="control">컨트롤</param>
    public static void ResumePainting(Control control)
    {
        IntPtr wordParameter = new IntPtr(1);

        Message message = Message.Create(control.Handle, WM_SETREDRAW, wordParameter, IntPtr.Zero);

        NativeWindow nativeWindow = NativeWindow.FromHandle(control.Handle);

        nativeWindow.DefWndProc(ref message);

        control.Invalidate();
    }

    #endregion
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요