I have a Diagram and I can drag items from a Tree view into and drop on a link (similar to the FlowGrammer example).

I have coded DoInternalDrag to remove items dragged from the diagram and hook the link back up to the next node.
I want to be able to Drop those items on another link. I tried to get selection.first and selection.last in DoInternalDrop but what I am dragging does not seem to be in selection.
I have looked for a similar example but I can't find one.
Is there anything you can point me to that will help me understand how I can do this in GoDiagram.

Overriding GoView.DoInternalDrag is not what you want to do, since that gets called for all drag-and-drops that start within that GoView, including cases that you don’t care about.

Instead you want to implement a GoView.ObjectSelectionDropped event handler (or equivalently an override of GoView.OnObjectSelectionDropped).

Thanks Walter…

I have tried to Override ObObjectSelectionDropped.
I have made the assumption that evt.GoObject is the object you dropped the selection on. Is this correct?
Also I expected selection to be populated with the items I dropped so I could hook them up in the diagram.
Have I got this wrong? How can I add the selection to the diagram. Perhaps I am trying too hard and Go Diagram can do this automatically.
The feature I need to implement is to drag a group of selected objects and drop them on another link in the diagram. Closing up the link they came from.
Yes, the GoObjectEventArgs.GoObject is the GoObject at the point of the drop. Note that it could be any kind of GoObject -- probably just a part of the node or link that the user is intending to drop onto.
The GoView.Selection is the collection of objects that were dropped into the GoView -- that is, added to the view's Document. So those objects are already "there" for you to modify, including creating links to them if they are nodes.

I understand what GoView.selection is but I am finding in OnObjectSelectionDropped there is nothing in GoView.Selection.

I had hoped it would be the objects I just dropped and that I could use selection.First and selection.Last to hook to.

Wait – are you talking about an internal drag-and-drop, or an external one? An internal one starts and finishes in the same GoView. An external one starts in some other Control.

For an internal drag-and-drop, implemented by GoToolDragging, there has to be something in the GoView.Selection, otherwise there wouldn't be anything being dragged that could be dropped.
You aren't still doing anything in an override of GoView.DoInternalDrag or DoInternalDrop, are you?
If you want to splice something into the link that the user dropped onto, the link will give you the FromPort and the ToPort with which to make new connecting links.