/// <summary> /// Disconnect, disposes and deletes the given preview <see cref="T:Dataweb.NShape.Advanced.Shape" />. /// </summary> /// <param name="shape"></param> protected void DeletePreviewShape(ref Shape shape) { if (shape != null) { // Disconnect all existing connections (disconnects model, too) foreach (ControlPointId pointId in shape.GetControlPointIds(ControlPointCapabilities.Connect | ControlPointCapabilities.Glue)) { ControlPointId otherPointId = shape.IsConnected(pointId, null); if (otherPointId != ControlPointId.None) shape.Disconnect(pointId); } // Delete model obejct if (shape.ModelObject != null) shape.ModelObject = null; // Delete shape shape.Invalidate(); shape.Dispose(); shape = null; } }