Khi chuột được nhấn xuống hầu hết các điều khiển sau đó sẽ Control.Capture đầu vào chuột. Điều này có nghĩa là tất cả các sự kiện MouseMove được gửi đến điều khiển gốc được chụp thay vì điều khiển chuột sẽ kết thúc. Điều này tiếp tục cho đến khi chuột bị mất chụp thường xảy ra trên chuột lên.
Nếu bạn thực sự cần biết khi chuột nằm ngoài tầm kiểm soát của bạn ngay cả khi một điều khiển khác đã bắt chuột, thì bạn chỉ thực sự có một cách. Bạn cần phải snoop các cửa sổ tin nhắn mệnh cho các điều khiển khác bên trong ứng dụng của bạn. Để làm điều đó bạn cần thêm một bộ lọc tin nhắn ...
Application.AddMessageFilter(myFilterClassInstance);
Sau đó, bạn cần phải thực hiện các IMessageFilter vào một lớp học phù hợp ...
public class MyFilterClass : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_MOUSEMOVE)
// Check if mouse is over my picture box!
return false;
}
}
Sau đó, bạn xem cho các sự kiện di chuyển chuột và kiểm tra xem họ đang trên hộp hình ảnh của bạn và làm bất cứ điều gì nó là bạn muốn làm.
Nguồn
2008-10-04 03:15:54
Sooo gần !! Clear this.capture hoạt động cho MouseLeave, nhưng không phải MouseEnter (của PictureBox khác) –
Tôi không hoàn toàn hiểu những gì bạn đang cố gắng đạt được, vì vậy không, điều này sẽ không làm việc không may. –