protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); bool lastCDiagButtonHovered = this.buttonCDiagHovered; bool lastCPickButtonHovered = this.buttonCPickHovered; bool lastPanelHovered = this.panelHovered; this.buttonCDiagHovered = !this.ReadOnly && this.rectCDiagButton.Contains(e.Location); this.buttonCPickHovered = !this.ReadOnly && this.rectCPickButton.Contains(e.Location); this.panelHovered = this.rectPanel.Contains(e.Location); if (lastCDiagButtonHovered != this.buttonCDiagHovered || lastCPickButtonHovered != this.buttonCPickHovered || lastPanelHovered != this.panelHovered) this.Invalidate(); if (this.panelDragBegin != Point.Empty) { if (Math.Abs(this.panelDragBegin.X - e.X) > 5 || Math.Abs(this.panelDragBegin.Y - e.Y) > 5) { DataObject dragDropData = new DataObject(); dragDropData.SetIColorData(new[] { this.value }); this.ParentGrid.DoDragDrop(dragDropData, DragDropEffects.All | DragDropEffects.Link); } } }
protected override void OnKeyDown(KeyEventArgs e) { if (e.KeyCode == Keys.Return) { this.ShowColorDialog(); e.Handled = true; } else if (e.KeyCode == Keys.C && e.Control) { DataObject data = new DataObject(); data.SetIColorData(new[] { this.value ?? (IColorData)ColorRgba.TransparentBlack }); Clipboard.SetDataObject(data); e.Handled = true; } else if (e.KeyCode == Keys.V && e.Control) { DataObject data = Clipboard.GetDataObject() as DataObject; if (data.ContainsIColorData()) { this.value = data.GetIColorData<IColorData>().FirstOrDefault(); this.PerformSetValue(); this.PerformGetValue(); this.OnEditingFinished(FinishReason.LeapValue); } else System.Media.SystemSounds.Beep.Play(); e.Handled = true; } base.OnKeyDown(e); }