2012-01-13 2 views
2

은 내가 잘 사상가 극복 할 수 있습니다 중 하나를 바라고 문제가 건너 한Alt 키 키 원인은 경우, 어떤 이유로 ...

을 다시 그려야 형성 사용자가 Alt 키를 누르면 양식이 다시 그려지고 플래시가 발생합니다.

이 경우에만 처음 발생하므로 Alt 키를 계속 누르면 아무 것도 수행되지 않습니다.

키 누르기를 처리하는 메뉴 스트립이나 이벤트가 없으므로 설정하지 않은 설정이나 내가 모르게 설정 한 설정 중 하나라고 가정 할 수 있습니다.

참고로, 형태는 나는 또한 투명성을 구현하기 위해 동일한 작업을 수행 패널 및 레이블의 번호를 가지고 있기 때문입니다 생성자

DoubleBuffered = true; 
SetStyle(ControlStyles.OptimizedDoubleBuffer | 
     ControlStyles.AllPaintingInWmPaint, true); 

에서 다음을 수행합니다.

protected override void WndProc(ref Message m) { 
     // Suppress the WM_UPDATEUISTATE message 
     if (m.Msg == 0x128) return; 
     base.WndProc(ref m); 
    } 

그것은 내가 그것을 시도 할 때 페인트를 억제하기 위해 잘 작동 :

+0

음, Alt 키를 누르면 시스템 메뉴에 포커스가 있습니다. WM_PAINT 메시지도 발생할 가능성이 전적으로있을 수 있습니다. – Joey

+0

@ 조이 : 나는 그것이 사실이라고 생각했는데, 이것을 방지하는 방법을 알고 있습니까? 감사합니다;) – Gavin

+0

사용자 정의 컨트롤을 의심하는 기본 폼과 단추에서이 동작을 보지 못했습니다. 다시 그리기가 계속 발생하는지 보려면 화면의 컨트롤 절반을 제거해 볼 수 있습니까? 다른 절반을 제거하고 깜박임을 유발하는 컨트롤을 이진 검색으로 간단히 제거하십시오. – CodingBarfield

답변

7

이 양식에이 코드를 붙여 넣기)

손가락은 둘 중 하나가 이유를 알 수 건넜다. Windows에서의 포커스 큐 처리는 상당히 기괴합니다. 예기치 않은 부작용이 없도록 철저하게 테스트하십시오.

+0

한스 고마워요! 나는 그것을 Form 기본 클래스에 기반을두고 곧바로 상황을 개선합니다. 나는 더 많은 바이올린을 가질 것이다. 그러나 지금까지 그것은 매우 유망한 것으로보고있다!! 다시 감사합니다! – Gavin