如何在内容控制c#中获得一个特定的表

本文关键字:一个 内容控制 | 更新日期: 2023-09-27 18:02:23

我有3个表在相同的内容控制,我如何得到第一个表并删除它?

我试过使用

SdtBlock ccWithTable = mainPart.Document.Body.Descendants<SdtBlock>().Where
                    (r => r.SdtProperties.GetFirstChild<Tag>().Val == tag).Single();
Table theTable = ccWithTable.Descendants<Table>().First();
ccWithTable.RemoveChild(theTable);

但是这给了我一个错误:

指定的oldChild不是此元素的子元素

我怀疑,因为表不是内容控件的子,有没有其他的方法来做到这一点?

如何在内容控制c#中获得一个特定的表

从你的评论中,我猜你可以访问table对象,但它不是sdtblock的直接子对象,所以你不能用ccWithTable.RemoveChild()方法删除它(是的,它假设要删除的项目是该元素的直接子元素的一部分)。

但是如果您可以访问表对象(即子对象),则不需要知道它的父对象。只需调用OpenXmlElement.Remove()方法:它将从父元素中删除元素。

theTable.Remove();