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); }
[Test] public void GetIColorDataString() { DataObject dataIn = new DataObject(); ColorRgba color = new ColorRgba(10, 10, 10, 10); dataIn.SetString("10,10,10,10"); Assert.IsTrue(dataIn.ContainsIColorData()); Assert.AreEqual(color, dataIn.GetIColorData <ColorRgba>()[0]); DataObject dataOut = this.SimulateClipboardSerialize(dataIn); Assert.IsTrue(dataOut.ContainsIColorData()); Assert.AreEqual(color, dataOut.GetIColorData <ColorRgba>()[0]); DataObject dataTooLong = new DataObject(); dataTooLong.SetString("10,10,10,10,10"); Assert.IsFalse(dataTooLong.ContainsIColorData()); Assert.IsNull(dataTooLong.GetIColorData <ColorRgba>()); DataObject dataWrongForm = new DataObject(); dataWrongForm.SetString("error,a,b"); Assert.IsFalse(dataWrongForm.ContainsIColorData()); Assert.IsNull(dataWrongForm.GetIColorData <ColorRgba>()); }
protected override void OnDragOver(DragEventArgs e) { base.OnDragOver(e); DataObject data = e.Data as DataObject; if (data.ContainsIColorData()) { e.Effect = e.AllowedEffect; } }
protected override void OnDragDrop(DragEventArgs e) { base.OnDragDrop(e); DataObject data = e.Data as DataObject; if (data.ContainsIColorData()) { this.SetValue(data.GetIColorData <IColorData>().FirstOrDefault()); this.PerformGetValue(); this.OnEditingFinished(FinishReason.LeapValue); e.Effect = e.AllowedEffect; } }
[Test] public void GetIColorData() { DataObject dataIn = new DataObject(); ColorRgba color = new ColorRgba(10, 10, 10, 10); dataIn.SetIColorData(new[] { (IColorData)color }); Assert.IsTrue(dataIn.ContainsIColorData()); Assert.AreEqual(color, dataIn.GetIColorData <IColorData>()[0]); Assert.AreEqual(color, dataIn.GetIColorData <ColorRgba>()[0]); Assert.AreEqual(color.ConvertTo <ColorHsva>(), dataIn.GetIColorData <ColorHsva>()[0]); DataObject dataOut = this.SimulateClipboardSerialize(dataIn); Assert.IsTrue(dataOut.ContainsIColorData()); Assert.AreEqual(color, dataOut.GetIColorData <IColorData>()[0]); Assert.AreEqual(color, dataOut.GetIColorData <ColorRgba>()[0]); Assert.AreEqual(color.ConvertTo <ColorHsva>(), dataOut.GetIColorData <ColorHsva>()[0]); }