Products Technologies Demo Docs Blog Support Company

Removing Empty Tables

Removing objects from a collection during iteration causes errors. This snippet collects all-empty tables into an ArrayList in a first pass, then iterates the list to safely call Tables.Remove() for each one, setting InputPosition to the first cell of each table before calling Remove.

Removing Empty Tables

I thought that I would quickly share this code with you that removes all empty tables in a document.

An ArrayList is used to collect all tables in which cells are empty. This is required, because it is not possible to remove an object from a collection when iterating through this collection. Therefore, we are using two loops: The first to get the empty tables and the second loop to remove the tables from the collection.

private void removeEmptyTables()
{
    ArrayList deleteTables = new ArrayList();

    foreach (TXTextControl.Table curTable in textControl1.Tables)
    {
        deleteTables.Add(curTable);

        foreach (TXTextControl.TableCell curCell in curTable.Cells)
        {
            if (curCell.Text != "")
            {
                deleteTables.Remove(curTable);
                continue;
            }
        }
    }

    foreach (TXTextControl.Table delTable in deleteTables)
    {
        textControl1.InputPosition = new TXTextControl.InputPosition(delTable.Cells.GetItem(1, 1).Start);
        textControl1.Tables.Remove();
    }
}

Stay in the loop!

Subscribe to the newsletter to receive the latest updates.

Related Posts

Windows FormsWPF.NET

Create a Table of Contents in Windows Forms using C#

This article explains how to create a table of contents in Windows Forms using the ribbon or programmatically. Creating a table of contents is required to organize large documents.


Windows FormsList.NET

Two Ways to Restart Numbered Lists in TX Text Control

In TX Text Control, numbered lists are continued by default and need to be reset when required. There is more than one way if you want to restart numbered lists in a document. In this article, two…


.NETSample

Paste Special: The Easy Way to Implement

TX Text Control version 15.0 introduced a ClipboardFormat parameter on the Paste method, enabling native Paste Special functionality. The GetClipboardFormats method returns all available clipboard…


.NETSampleSections

How to Remove All Section Breaks in a Document?

TX Text Control 15.0 adds per-section page column support alongside existing section breaks. To remove all section breaks programmatically, iterate through SectionCollection using…


.NETPrintingSample

Batch Printing: How to Print Documents in One Print Job

Batch printing multiple documents as a single print job using TX Text Control relies on a .NET PrintDocument with PrintPage and QueryPageSettings events. Each page is rendered individually via the…

Share on this blog post on: