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

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

 

▶ ControlHelper.cs

using System.Runtime.InteropServices;

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

    #region 메시지 보내기 - SendMessage(windowHandle, message, wordParameter, longParameter)

    /// <summary>
    /// 메시지 보내기
    /// </summary>
    /// <param name="windowHandle">윈도우 핸들</param>
    /// <param name="message">메시지</param>
    /// <param name="wordParameter">WORD 매개 변수</param>
    /// <param name="longParameter">LONG 매개 변수</param>
    /// <returns>처리 결과</returns>
    [DllImport("user32")]
    private static extern int SendMessage(IntPtr windowHandle, int message, bool wordParameter, int longParameter);

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Private

    #region Field

    /// <summary>
    /// WM_SETREDRAW
    /// </summary>
    private const int WM_SETREDRAW = 11;

    #endregion

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

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

    /// <summary>
    /// 페인팅 보류하기
    /// </summary>
    /// <param name="control">컨트롤</param>
    public static void SuspendPainting(Control control)
    {
        SendMessage(control.Handle, WM_SETREDRAW, false, 0);
    }

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

    /// <summary>
    /// 페인팅 재개하기
    /// </summary>
    /// <param name="control">컨트롤</param>
    public static void ResumePainting(Control control)
    {
        SendMessage(control.Handle, WM_SETREDRAW, true, 0);

        control.Refresh();
    }

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

댓글을 달아 주세요