protected override void OnMouseMove(MouseEventArgs e) { int width = m_swatchOuterRegionWidth - (2 * OUTER_PADDING); int height = m_swatchOuterRegionHeight - (2 * OUTER_PADDING); int x = e.X - OUTER_PADDING; int y = e.Y - OUTER_PADDING; Rectangle r = new Rectangle(m_startX, m_startY, width, height); Rectangle c = new Rectangle(e.X, e.Y, 1, 1); if (c.IntersectsWith(r)) { int swatchColumnIndex = (x / (SWATCH_WIDTH + PADDING)); int swatchRowIndex = (y / (SWATCH_HEIGHT + PADDING)); ColorSwatch potentialSwatch = m_swatchArray[swatchColumnIndex, swatchRowIndex]; Rectangle potentialSwatchRectangle = new Rectangle(potentialSwatch.Location, potentialSwatch.Size); Point cursorPoint = new Point(e.X, e.Y); Rectangle cursorRectangle = new Rectangle(cursorPoint, new Size(1, 1)); if (cursorRectangle.IntersectsWith(potentialSwatchRectangle)) { // hides the tooltip when moving from swatch to swatch. if (!m_lastSwatch.Equals(potentialSwatch)) { this.colorTip.Active = false; } if (!potentialSwatch.Description.Equals(colorTip.GetToolTip(this))) { this.colorTip.SetToolTip(this, potentialSwatch.Description); } this.colorTip.Active = true; m_lastSwatch = potentialSwatch; this.Cursor = Cursors.Hand; } else { this.Cursor = Cursors.Default; this.colorTip.SetToolTip(this, ""); this.colorTip.Active = false; } } }