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
반응형
그리드형(광고전용)
'C# > WinForm' 카테고리의 다른 글
[C#/WINFORM/.NET6] ISynchronizeInvoke 인터페이스 : InvokeRequired 코드 패턴 자동화하기 (0) | 2022.10.09 |
---|---|
[C#/WINFORM/.NET6] MethodInvoker 대리자 : InvokeRequired 코드 패턴 자동화하기 (0) | 2022.10.09 |
[C#/WINFORM/.NET6] 화면 돋보기 사용하기 (0) | 2022.10.09 |
[C#/WINFORM/.NET6] TextBox 클래스 : Multiline 속성이 False일 때 ENTER 키 누르는 경우 알림 소리 방지하기 (0) | 2022.10.07 |
[C#/WINFORM/.NET6] Control 클래스 : 컨트롤 페인팅 보류하기/재개하기 (0) | 2022.10.07 |
[C#/WINFORM] WebView2 클래스 사용하기 (0) | 2022.10.03 |
[C#/WINFORM] ColorTranslator 클래스 : ToHtml 정적 메소드를 사용해 16진수 색상 코드 구하기 (0) | 2022.10.02 |
[C#/WINFORM/.NET6] TimeZoneInfo 클래스 : ConvertTimeFromUtc 정적 메소드를 사용해 UTC 시간을 특정 지역 시간으로 변환하기 (0) | 2022.09.26 |
[C#/WINFORM/.NET6] DataGridView 클래스 : 복수 선택 행 삭제하기 (0) | 2022.08.30 |
[C#/WINFORM/.NET6] DataGridView 클래스 : 단일 선택 행 삭제하기 (0) | 2022.08.30 |
댓글을 달아 주세요