We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.

How can I implement drag-and-drop from other controls onto the Diagram?

 

The sample included in this KnowledgeBase demonstrates how you can implement drag and drop support in an Essential Diagram application.

  • An image from a Windows Forms PictureBox control can be dragged and dropped onto the Diagram. A node of type BitmapNode is created.
  • A node from an Essential Tools' TreeViewAdv control can be dragged and dropped onto the Diagram. A node of type TextNode is created.

Note: This sample uses the TreeViewAdv control from Essential Tools .

C#

private void diagram1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)

  {

   //Allow Drop Cursor only if it is a Diagram Node or a Bitmap

   if ( (e.Data.GetDataPresent(typeof(NodeCollection))) | (e.Data.GetDataPresent(DataFormats.Bitmap))|(e.Data.GetDataPresent(typeof(TreeNodeAdv))))

   {

    e.Effect = DragDropEffects.All;

   }

   else

    e.Effect = DragDropEffects.None;

  }

   private void diagram1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)

  {

   Point pt = this.diagram1.PointToClient(new Point(e.X, e.Y));

   //if this is a bitmap then insert a BitmapNode in Diagram

   if (e.Data.GetDataPresent(DataFormats.Bitmap))

   {

    BitmapNode bmpnode = new BitmapNode((Bitmap)e.Data.GetData(DataFormats.Bitmap));

    InsertNodesCmd insCmd = new InsertNodesCmd( this.diagram1.Model, bmpnode, this.diagram1.View.DeviceToView( pt ) );

diagram1.Controller.ExecuteCommand(insCmd);

   }

   else if(e.Data.GetDataPresent(typeof(TreeNodeAdv)))

   {

    TreeNodeAdv treenode = (TreeNodeAdv) e.Data.GetData(typeof(TreeNodeAdv));

    TextNode textnode = new TextNode();

    textnode.Text = treenode.Text;

    textnode.SizeToText(new SizeF(0,0));

    textnode.Location = this.diagram1.View.DeviceToView( pt );

this.diagram1.Model.AppendChild(textnode);

    this.diagram1.Refresh();

   }

  }

VB

Private Sub diagram1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles diagram1.DragEnter

'Allow Drop Cursor only if it is a Diagram Node or a Bitmap

If e.Data.GetDataPresent(GetType(NodeCollection)) Or e.Data.GetDataPresent(DataFormats.Bitmap) Or e.Data.GetDataPresent(GetType(TreeNodeAdv)) Then

e.Effect = DragDropEffects.All

Else

e.Effect = DragDropEffects.None

End If

End Sub 'diagram1_DragEnter

Private Sub diagram1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles diagram1.DragDrop

Dim pt As Point = Me.diagram1.PointToClient(New Point(e.X, e.Y))

'if this is a bitmap then insert a BitmapNode in Diagram

If e.Data.GetDataPresent(DataFormats.Bitmap) Then

Dim bmpnode As BitmapNode = New BitmapNode(CType(e.Data.GetData(DataFormats.Bitmap), Bitmap))

Dim insCmd As InsertNodesCmd = New InsertNodesCmd(Me.diagram1.Model, bmpnode, Me.diagram1.View.DeviceToView(pt))

diagram1.Controller.ExecuteCommand(insCmd)

ElseIf e.Data.GetDataPresent(GetType(TreeNodeAdv)) Then

Dim treenode As TreeNodeAdv = CType(e.Data.GetData(GetType(TreeNodeAdv)), TreeNodeAdv)

Dim textnode As TextNode = New TextNode

textnode.Text = treenode.Text

textnode.SizeToText(New SizeF(0, 0))

textnode.Location = Me.diagram1.View.DeviceToView(pt)

Me.diagram1.Model.AppendChild(textnode)

Me.diagram1.Refresh()

End If

End Sub 'diagram1_DragDrop

Syncfusion Inc.

Article ID: Published Date: Last Revised Date: Platform: Control:
179 04/30/2011 07/10/2014 Windows Forms Diagram
Tags:
Did you find this information helpful?
Add Comment
You must log in to leave a comment

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.