2012-11-28 2 views
1

이 코드를 살펴 보길 부탁드립니다. Button1이라는 버튼이 있습니다.너무 느리게 활성화되는 WinForm 이벤트 처리기

private void button1_MouseHover(object sender, EventArgs e) 
    { 
     button1.BackColor = Color.Black; 
    } 

    private void button1_MouseLeave(object sender, EventArgs e) 
    { 
     button1.BackColor = Color.Blue; 
    } 

이 코드는 작동하지만 문제는 아주 조금 지연됩니다. 색상 변경시 약 1/2 초 지연. 나는 WPF에서 똑같은 것을 시도해 왔으며 거기에는 전혀 지연이 없다. 기본적으로 마우스 이벤트가 가능한 빨리 실행되기를 바랍니다.

어떤 방법으로 그 작업을 수행 할 수 있습니까? 감사합니다.

답변

5

MouseHover 대신 MouseEnter 이벤트를 사용하십시오. 잠시 동안 고정되어 있지 않으면 Windows가 마우스를 가리키고 있다고 말할 수 없으므로 후자는 '지연 후'발생합니다.

+0

정말 고마워요 !! 나는 문자 그대로 하루 종일 연구했고,이 문제로 인해 많은 다른 접근 방법을 찾아 내려고 노력했지만 솔루션은 너무 단순했습니다. 너는 나에게 많은 시간을 덜어 주었다. –

+0

내 기쁨. –

0

button1.Invalidate(false)을 호출하면 다음 프레임 내에서 컨트롤이 다시 그려집니다. 색상 변경 코드 바로 다음에이 행을 배치하고 작동하는지 확인하십시오.