/// <summary> /// /// </summary> /// <param name="context"></param> private void InitializeDrop(EditorContext context) { containerControl.AllowDrop = true; containerControl.DragEnter += (s, e) => { if (!e.Data.GetDataPresent(DataFormats.FileDrop) && !e.Data.GetDataPresent(typeof(XGroup)) && !e.Data.GetDataPresent(typeof(Record)) && !e.Data.GetDataPresent(typeof(ShapeStyle))) { e.Effects = DragDropEffects.None; e.Handled = true; } }; containerControl.Drop += (s, e) => { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { try { var files = (string[])e.Data.GetData(DataFormats.FileDrop); if (context.Drop(files)) { e.Handled = true; } } catch (Exception ex) { if (context.Editor.Log != null) { context.Editor.Log.LogError("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace); } } } if (e.Data.GetDataPresent(typeof(XGroup))) { try { var group = e.Data.GetData(typeof(XGroup)) as XGroup; if (group != null) { var p = e.GetPosition(containerControl); context.DropAsClone(group, p.X, p.Y); e.Handled = true; } } catch (Exception ex) { if (context.Editor.Log != null) { context.Editor.Log.LogError("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace); } } } if (e.Data.GetDataPresent(typeof(Record))) { try { var record = e.Data.GetData(typeof(Record)) as Record; if (record != null) { var p = e.GetPosition(containerControl); context.Drop(record, p.X, p.Y); e.Handled = true; } } catch (Exception ex) { if (context.Editor.Log != null) { context.Editor.Log.LogError("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace); } } } if (e.Data.GetDataPresent(typeof(ShapeStyle))) { try { var style = e.Data.GetData(typeof(ShapeStyle)) as ShapeStyle; if (style != null) { var p = e.GetPosition(containerControl); context.Drop(style, p.X, p.Y); e.Handled = true; } } catch (Exception ex) { if (context.Editor.Log != null) { context.Editor.Log.LogError("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace); } } } }; }