Я делаю CustomControl на основе элемента управления 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);
}
}
Моя проблема в том, что я ясно вижу на панели отладки, что Mouse IN и Mouse OUT верны, поэтому переменная должна быть правильно установлена, но в событии OnPaintЯ никогда не вхожу в условную строку m_IsHover ...
Я действительно не понимаю, в чем проблема, кажется, это так просто ...