Hi
As noted in
this Knowledgbase article, the
Diagram.Model.ChildrenChangeComplete event is fired whenever a new node is added or removed. So you could use the
IGraphNode Interface to detemine the links entering and leaving the Symbol and use the
RemoveNodesCmd to remove the links when an instance of MySymbol is deleted. Run
this sample and add a few nodes and links and select a Symbol (MySymbol) and click on the "Delete Symbols and Links" Button.
Here is the code for the Model_ChildrenChangeComplete event:
private void diagram1_Model_ChildrenChangeComplete(object sender, Syncfusion.Windows.Forms.Diagram.NodeCollection.EventArgs evtArgs)
{
if (evtArgs.ChangeType.ToString() == "Remove")
{
IGraphNode curNode = evtArgs.Node as IGraphNode;
if (curNode != null)
{
IEnumerator enumedgesEntering = curNode.EdgesEntering.GetEnumerator();
IEnumerator enumedgesLeaving = curNode.EdgesLeaving.GetEnumerator();
//RemoveNodesCmd
RemoveNodesCmd rmnodesCmd = new RemoveNodesCmd();
//NodeCollection
NodeCollection links = new NodeCollection();
//Incoming Links
ICollection edgesEntering = curNode.EdgesEntering;
while (enumedgesEntering.MoveNext())
{
Link incomingLink = enumedgesEntering.Current as Link;
links.Add(incomingLink);
}
//Leaving Links
ICollection edgesLeaving = curNode.EdgesLeaving;
while (enumedgesLeaving.MoveNext())
{
Link leavingLink = enumedgesLeaving.Current as Link;
links.Add(leavingLink);
}
//Concatatenation of the NodeCollection to the RemoveNodesCmd
rmnodesCmd.Nodes.Concat(links);
//Execute the RemoveNodesCmd
this.diagram1.Controller.ExecuteCommand(rmnodesCmd);
}
}
}
Regards
Arun