Je fais un CustomControl basé sur un contrôle ToolStripButton, j'essaie de savoir quand la souris est Hover le bouton pour dessiner différemment. Voici un aperçu rapide de mon code:Vraiment étrange problème d'événement ToolStripButton
private bool m_IsHover = false;
...
protected override void OnMouseEnter(EventArgs e)
{
m_IsHover = true;
Debug.WriteLine("Mouse IN");
base.OnMouseEnter(e);
}
protected override void OnMouseLeave(EventArgs e)
{
m_IsHover = false;
Debug.WriteLine("Mouse OUT");
base.OnMouseLeave(e);
}
...
protected override void OnPaint(PaintEventArgs e)
{
// Define rectangle used to draw
Rectangle borderRec = new Rectangle(0, 0, this.Width - 1, this.Height - 1);
if (m_IsHover)
{
// Draw border
e.Graphics.DrawRectangle(m_BorderPen, borderRec);
...
}
else
{
// Default draw
base.OnPaint(e);
}
}
Mon problème est que je vois clairement dans le panneau de débogage souris IN et souris OUT sont à droite, si variable doit être correctement réglée, mais en cas OnPaint, je jamais entrer dans le m_IsHover ... conditionnel
Je ne comprends vraiment pas ce que le problème est, il semble si facile ...
J'ai quelques indices, en fait l'événement OnPaint n'est pas appelé quand la souris entre, c'est seulement l'appel quand la souris sort. Mais c'est étrange, il semble que ce soit un autre événement qui est appelé pour dessiner le bouton quand la souris est dedans. Mais lequel? – Karnalta