2012-07-07 3 views
0

C#을 사용하여 그래픽을 표시 할 여러 패널이있는 Windows 폼을 만듭니다.System.ComponentModel.Win32Exception : 작업이 성공적으로 완료되었습니다.

try 
{ 
    if (myBuffer != null) 
     myBuffer.Dispose(); 
    myBuffer = currentContext.Allocate(this.panel1.CreateGraphics(), this.panel1.DisplayRectangle); 
} 
catch (Win32Exception ex) 
{ 
    MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 

이것은 사용중인 코드입니다.

이 오류가 발생했습니다. System.ComponentModel.Win32Exception : 최소화 된 상태에서 창을 최대화하면서 작업이 성공적으로을 완료했습니다.

답변

1

BufferedGraphicsContext 클래스는 내부적으로 구현되어야하는 구현 세부 사항입니다. 보이지 않는 컨트롤을 만들 때 실수하는 것만큼이나 탄력이 없습니다. 분명히 예외보고가 충분히 디버깅되지 않았기 때문에 실수가 자주 발생하지 않는 코드는 드문 일이 아닙니다.

패널 컨트롤을 이중 버퍼링하기 위해이 작업을 수행하는 것은 분명히 기본 설정이 아닙니다. Panel에서 파생 된 자체 컨트롤을 만들면됩니다. 프로젝트에 새 클래스를 추가하고 아래 표시된 코드를 붙여 넣습니다. 폼에 도구 상자 맨 위에 추가 된 새 컨트롤을 컴파일하고 놓아 기존 컨트롤을 바꿉니다.

using System; 
using System.Windows.Forms; 

class BufferedPanel : Panel { 
    public BufferedPanel() { 
     this.DoubleBuffered = true; 
    } 
} 
관련 문제