이 코드를 사용하여 컨트롤의 다시 그리기를 억제하고 다시 시작할 수 있습니다.] 행운을 빈다.
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace pl.emag.audiopc.gui {
// ************************************************************************
//`enter code here`
// ************************************************************************
public class PaintingHelper {
// ********************************************************************
//
// ********************************************************************
public static void SuspendDrawing(Control parent) {
SendMessage(parent.Handle, WM_SETREDRAW, false, 0);
}
// ********************************************************************
//
// ********************************************************************
public static void ResumeDrawing(Control parent) {
SendMessage(parent.Handle, WM_SETREDRAW, true, 0);
parent.Refresh();
}
// ********************************************************************
//
// ********************************************************************
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, Int32 wMsg,
bool wParam, Int32 lParam);
// ********************************************************************
//
// ********************************************************************
private const int WM_SETREDRAW = 11;
}
}
지금까지 답변 해 주셔서 감사합니다. 나는 내가 무언가가 변경되었다는 것을 알 때 control.Invalidate를 사용한다고 덧붙여 야했다. Paint 메서드는 마우스가 움직일 때 .NET (나!가 아님)에 의해 호출됩니다. –
마우스가 컨트롤 위로 이동하면 OnPaint가 호출되지 않고 다른 것이 계속 발생합니다. –
나는 단순한 프로젝트로 테스트를했고, OnMouseMove에서 Invalidate를 호출하지 않으면 마우스 이동에 의해 그림판이 호출되지 않는다. 코드를 호출 할 때 호출을 무효화하는 다른 조건이 코드에없는 것은 확실합니까? 일부 로깅 코드를 추가하여 무효화 및 마우스 이동 호출을 기록하고 의도 한대로 호출되었는지 확인하십시오. – rslite