It’s highly unlikely that you need to implement a Control.DragOver event handler (or override GoView.OnDragOver).
If you are just talking about drawing links between nodes in the same GoView, you don’t need to implement any Control event handlers or override any GoView methods. And the GoView.DoExternalDrop method is only called for a drag-and-drop originating in a different Control, so that isn’t involved with “linking” behavior either.
There are basically two places where you can put code to determine whether the user can draw a link between two ports: either in the linking tool (GoToolLinkingNew and/or GoToolRelinking) or in the port. In either case you’ll want to override the IsValidLink method. By default the GoToolLinking.IsValidLink method will call the GoPort.IsValidLink method in addition to various checks.
As a convenience there are some properties that you can set in order to affect the behavior of these two IsValidLink methods. For many common cases you just need to set these properties instead of overriding any methods. Take a look at the GoPort properties that have “Valid” in their names. Also take a look at the GoDocument.ValidCycle property.
But in the most general case, you’ll need to override one of those two IsValidLink methods. If you really want the code “in” your node, you can override GoPort.IsValidLink and make sure your node uses an instance of your port subclass instead of the usual one.
Thanks for the feedback.
Have you replaced any standard Tools or done anything to Mouse Events?