Section breaks allow documents to have different page sizes, different margins, and other properties related to the sections. However, there are scenarios where existing section breaks should be removed to create a consistent document layout.

A section can also have its own header and footer collection with headers for the first page and footers for the first page. Removing all sections creates a consistent layout with one page orientation and one set of margins, headers, and footers.

Looping Sections

To achieve this, all section break characters must be removed. To find the indexes of all these break characters, you can iterate over the collection of sections. We need to go through all sections except the first to set the input position to the beginning of the section. A new paragraph will be added at the specified location. Then the section break character is selected and removed by passing an empty string.

private void RemoveAllSections(TextControl textControl)
{
// remove all sections
for (int section = 2; section <= textControl.Sections.Count;)
{
// set the input position to the start of the section
textControl.Select(textControl.Sections[section].Start - 2, 0);
// add a new paragraph
textControl.Selection.Text = "\r\n";
// select the end of paragraph character
textControl.Selection.Length = 1;
// remove the paragraph
textControl.Selection.Text = "";
}
}
view raw test.cs hosted with ❤ by GitHub

In this example, the RemoveAllSections method is called after loading an MS Word DOCX document that contains multiple sections.

textControl1.Load("demo.docx", TXTextControl.StreamType.WordprocessingML);
RemoveAllSections(textControl1);
view raw test.cs hosted with ❤ by GitHub

The following screenshot shows the document before and after section break removal.

Removing Section Breaks