Esattamente. Il problema è da rilevare sulla mancanza di accuratezza degli eventi MouseEnter e MouseLeave che, a seconda dei casi, potrebbero non essere generati dal controllo, in base alla situazione.
Per garantire che il codice venga comunque eseguito, occorre utilizzare degli espedienti, ad esempio gestire la condizione negli eventi di altri controlli, compreso il MouseMove, o alla peggio creare anche un Timer che forzi la situazione corretta quando nessuno degli eventi è stato in grado di gestirla (impostato con un intervallo sufficientemente basso da garantire una buona esperienza utente).
Ciao!