Найти и перебрать таблицы в Richtextbox

Я не знал, что будет так сложно играть с управлением Richtextbox. Я пытаюсь получить данные буфера обмена и пытаюсь установить их в RichTextBox.

RichTextBox rtb = new RichTextBox();
rtb.Rtf = Clipboard.GetText(TextDataFormat.Rtf);

Как перебрать коллекцию таблиц или индивидуальные таблицы? Можем ли мы найти количество таблиц в RichTextBox?

Моя цель - найти какие-либо таблицы в данных RTF буфера обмена и, если да, то проверить их на наличие данных.

1 ответ

Хотя уже слишком поздно, чтобы ответить на этот вопрос. Я также столкнулся с тем же требованием. Так я поступил:

private static void findTableinRtf(string rtf)
    {
        var flowDocument = new FlowDocument();
        var textRange = new TextRange(flowDocument.ContentStart, flowDocument.ContentEnd);
        using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(rtf)))
        {
            textRange.Load(ms, DataFormats.Rtf);
        }
        var blocks = flowDocument.Blocks;
        foreach (var block in flowDocument.Blocks)
        {
            switch (block)
            {
                case List list:
                     //implement List;
                    break;

                case Table table:
                    workWithTable(table);
                    break;

                case Paragraph paragraph:
                    convertParagraph(paragraph);
                    break;
                case Section section:
                    convertSection(section);
                    break;

            }
        }

    }
    private static void workWithTable(Table rtfTable)
    {
        TableColumnCollection columns = rtfTable.Columns;
        TableRowGroupCollection rowGroups = rtfTable.RowGroups;
        foreach (var row in rowGroups[0].Rows)
        {
            //access cells
            // row row.Cells[i];

        }

    }
Другие вопросы по тегам