All docs
V21.1
21.1
20.2
20.1
19.2
The page you are viewing does not exist in version 19.2. This link will take you to the root page.
19.1
The page you are viewing does not exist in version 19.1. This link will take you to the root page.
18.2
The page you are viewing does not exist in version 18.2. This link will take you to the root page.
18.1
The page you are viewing does not exist in version 18.1. This link will take you to the root page.
17.2
The page you are viewing does not exist in version 17.2. This link will take you to the root page.
.NET Framework 4.5.2+
.NET Framework 4.5.2+
.NET Standard 2.0+

ShapeCollection.Flatten() Method

Converts a shape collection into a flattened collection that contains all drawing objects in the document, including items of shape groups and canvases.

Namespace: DevExpress.XtraRichEdit.API.Native

Assembly: DevExpress.RichEdit.v21.1.Core.dll

Declaration

IEnumerable<DrawingObject> Flatten()

Returns

Type Description
IEnumerable<DrawingObject>

A flattened collection of drawing objects in the document.

Remarks

The ShapeCollection stores each shape group or drawing canvas as a single object and does not include their items. You need to use the following properties to obtain their elements:

The Flatten method recursively iterates through the shape collection (its groups and canvases) and collects all drawing objects stored in the document. You can filter the collection by Type to retrieve specific shapes.

The example below shows how to split all shape groups in the document (including nested groups):

using System.Linq;
// ...

Document document = wordProcessor.Document;
List<DrawingObject> groups = document.Shapes.Flatten()
    .Where(x => x.Type == ShapeType.Group)
    .ToList();
for (int i = groups.Count - 1; i >= 0; i--)
{
    groups[i].GroupItems.Ungroup();
}
See Also