protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); var prevHoveredItem = selectedItem; selectedItem = ItemAt(PointToClient(MousePosition)); if (selectedItem != null) { selectedItem.RaiseOnMouseHover(e); } if (prevHoveredItem != selectedItem) { if (prevHoveredItem != null) { prevHoveredItem.RaiseOnMouseLeave(e); } if (selectedItem != null) { selectedItem.RaiseOnMouseEnter(e); } } UpdateToolTip(selectedItem); }