protected override void OnMouseMove (MouseEventArgs mevent) {
bool inside = false;
bool redraw = false;
if (ClientRectangle.Contains (mevent.Location))
inside = true;
// If the button was pressed and we leave, release the button press and vice versa
if ((mevent.Button & MouseButtons.Left) != 0) {
if (this.Capture && (inside != is_pressed)) {
is_pressed = inside;
redraw = true;
}
}
if (is_entered != inside) {
is_entered = inside;
redraw = true;
}
if (redraw)
Invalidate ();
base.OnMouseMove (mevent);
}