C#에서의 '마우스 클릭(mousedown) 상태'에서 '마우스 이벤트' 일어나지 않는 문제
컨트롤에 마우스 이벤트를 걸고 작업을 하던 중,
마우스 클릭 상태에서는 'MouseMove'이벤트를 제외한 발생가능 이벤트,
즉 'MouseLeave'와 'MouseEnter', 'MouseHover'이벤트가 일어나지 않는 다는 것을 발견했다.
클릭 상태에서도 컨트롤 위로 마우스가 올라오거나 벗어날때 이미지를 바꾸고 싶다면
'MouseMove' 이벤드 메서드에서 컨트롤 범위를 체크하여 원하는 작업을 해주면 된다.
컨트롤의 범위를 Rectagle클래스로 잡은 후에 마우스의 현재 위치를 Rectangle클래스의 Contains함수를 이용하여
컨트롤 위에 있는지 아닌지를 확인하면 된다.
예를 들면 다음과 같다.
private void picturebox1_MouseMove(object sender, MouseEventArgs e) int x = picturebox1.Location.X + e.X; if (rect.Contains(p)) else } }
|
'Programming > C#' 카테고리의 다른 글
폼과 폼간의 전송 (부모 자식간의 전송) (0) | 2010.07.07 |
---|---|
C# 에서의 Enum (0) | 2010.07.06 |
Windows Forms FAQ - Windows Forms (0) | 2010.07.02 |
C# 싱글톤 (0) | 2010.07.02 |
Singleton (0) | 2010.07.02 |