Mouse de controle pai entrar / sair de eventos com controles filho
Eu tenho um aplicativo WinForms do C # .NET 2.0. Meu aplicativo tem um controle que é um contêiner para dois controles filho: um rótulo e algum tipo de controle de edição. Você pode pensar assim, onde a caixa externa é o controle pai:
+---------------------------------+ | [Label Control] [Edit Control] | +---------------------------------+
Eu estou tentando fazer algo quando o mouse entra ou sai do controle pai, mas eu não me importo se o mouse se move em um de seus filhos. Eu quero um único sinalizador para representar "o mouse está em algum lugar dentro do pai ou filhos" e "o mouse foi movido fora dos limites de controle pai".
Eu tentei manipular MouseEnter e MouseLeave no pai e ambos os controles filho, mas isso significa que a ação começa e termina várias vezes como o mouse se move no controle. Em outras palavras, eu entendo isso:
Parent.OnMouseEnter (start doing something) Parent.OnMouseLeave (stop) Child.OnMouseEnter (start doing something) Child.OnMouseLeave (stop) Parent.OnMouseEnter (start doing something) Parent.OnMouseLeave (stop)
Os eventos OnMouseLeave intermediários causam alguns efeitos indesejáveis, já que o que estou fazendo é iniciado e depois interrompido. Eu quero evitar isso.
Eu não quero capturar o mouse como o pai recebe o mouse, porque os controles filho precisam de seus eventos de mouse, e eu quero menu e outras teclas de atalho para o trabalho.
Existe uma maneira de fazer isso dentro do .NET framework? Ou eu preciso usar um gancho do mouse do Windows?