2014-06-06 3 views
2

winform 크기를 조정할 때 문제가 있습니다. 나는 내가 또한이 양식 텍스트 상자, 레이블 등을 포함하는 그룹 상자에winform의 크기를 조정 한 후의 페인트 문제

protected override void OnPaintBackground(PaintEventArgs e) 
    { 
     DoubleBuffered = true; 
     ResizeRedraw = true; 

     using (var brush = new LinearGradientBrush(ClientRectangle, Color.LightBlue, Color.CornflowerBlue, 90F)) 
     { 
      e.Graphics.FillRectangle(brush, ClientRectangle); 
     } 
    } 

을 다음과 배경색이 설정되는 정도로 나는 OnPaintBackground 메소드를 오버라이드 (override) 한 내 모든 형태에 특정 배경색을주고 싶어 투명한 것으로. 처음에는 winform이 실행될 때 정상적으로 작동하지만 winform을 최소화 한 다음 빨간색을 최대화하면 그룹 상자 안에 CROSS가 표시됩니다.

많은 사례를 검토했지만 대부분 깜박임에 대해 이야기하지만 이는 사실이 아닙니다. 나도 그 그림이 어떻게 작동하는지에 대해 읽었습니다. 분명히 winform이 먼저 표시 될 때 자식 컨트롤에 자신을 페인트하도록 지시하지만 아버지는 아직 페인트되지 않았기 때문에 컨트롤이 배경에 대해 투명한 부분으로 무엇을 페인트해야할지 모릅니다. 컨트롤의.

다음은 크기를 조정 한 후의 모습입니다. 당신의 도움을 위해 고급의

Resize showing RED CROSS

감사합니다!

추신 : 저는 Visual Studio 2012, C#을 사용하고 있습니다.

+3

프로 시저가 처리되지 않은 예외를 throw하면 적십자가 나타납니다. try : try 블록에 catch하고 예외에서 중단하십시오. 어쩌면 예외 설명은 당신에게 힌트를 줄 수 있습니다 –

+0

Miroslav 답변을 주셔서 감사합니다. 실제로 catch 라인을 통과 할 때 messageBox에 예외를 두었습니다. 그것은 다음과 같습니다 : 사각형 너비 또는 높이 "0"같을 수 없습니다. 나는 다음 조건문을 넣었고 완벽하게 잘 작동했다 !! 내 응용 프로그램을 debbug하는 방법에 대한 팁 주셔서 감사합니다. 마지막 코드는 다음과 같습니다. – Matias

+0

코드를 try catch 문 안에 넣고 다음 조건을 추가했습니다. (ClientRectangle.Width! = 0 && ClientRectangle.Height! = 0) {// 여기에서 다시 그려주십시오} – Matias

답변

-1

내가 발견 여기에 기사 : 질문에 대한 답은 OnPaintBackground이 무시되는 상황이었다에서 Calling OnPaintBackground

, 보장하기 위해 제대로 그 다음에 양식 스타일을 설정해야한다고 말했다 작동

this.SetStyle(ControlStyles.AllPaintingInWmPaint 
       | ControlStyles.OptimizedDoubleBuffer 
       | ControlStyles.ResizeRedraw 
       | ControlStyles.DoubleBuffer 
       | ControlStyles.UserPaint 
       , true); 

.UserPaint 그냥 당신이 취급하고 있음을 알려줍니다 올바르게 무시됩니다 있도록 다른 작업에 의해 처리되지 않는 것을 보장하기 위해 자신을 페인팅.

희망이 도움이됩니다.

+0

이미 가능한 해결책을 시도했습니다. . 주의를 기울이면 이미 내 코드에서 ResizeRedraw 및 DoubleBuffered 속성을 true로 설정했습니다. 이러한 속성은 양식 배경에서 문제를 해결했지만 아직 문제가있는 그룹 상자 내부에서는 해결되지 않았습니다. 어쨌든 답해 주셔서 감사합니다. – Matias

+0

페인트가 끝나면 라벨이 그렇게됩니다. 바탕 화면 주위로 양식을 옮겨보십시오. 아직도 그런가요? 그것이 새로 고침해야 양식을 이동하여 "새로 고침"문제가 있다면 나는 단지 궁금해서. – Frank

+0

Frank, Miroslav 코멘트에 대한 제 대답을 확인하십시오. 나는 이미 문제를 해결했다. 귀하의 지원에 너무 감사드립니다! – Matias

관련 문제