tengo un control de usuariodetectar si el cursor está dentro de los límites de un control
public partial class UserControl1 : UserControl, IMessageFilter
{
public UserControl1()
{
InitializeComponent();
Application.AddMessageFilter(this);
}
public bool PreFilterMessage(ref Message m)
{
var mouseLocation = Cursor.Position;
if (Bounds.Contains(PointToClient(mouseLocation)))
{
bool aBool = true;//breakpoint
bool two = aBool;//just assignment so compiler doesn't optimize my bool out
}
if (m.Msg != 0x20a) // Scrolling Message
{
return false;//ignore message
}
return false;
}
}
Cuando flotar sobre el control de usuario contenida en un formulario principal, el punto de interrupción no se ve afectado. El punto de interrupción se golpea muy cerca, pero puedo estar en un cuadro de texto real dentro del control del usuario y no recibir un golpe. ¿Cómo puedo determinar con precisión si estoy dentro de los límites de este control de usuario?
FWIW, tengo dos monitores. No parece marcar la diferencia qué monitor estoy usando.
posible duplicado del [cursor sobre el control WinForm (C#, WinForm 4.0)] (http://stackoverflow.com/questions/5620276/cursor-over-winform-control-c-winform-4-0) –
@ DanielA.White Las respuestas que veo en su enlace son específicas de un solo control. Tenga en cuenta que aquí estoy enganchado en un filtro de mensajes global. No creo que esos funcionen. Eventualmente necesito saber exactamente qué control se ha realizado, no solo el control general del usuario que contiene los controles secundarios. –