gpt4 book ai didi

C# 互操作 : How to determine a range of a Field?

转载 作者:行者123 更新时间:2023-11-30 20:25:30 25 4
gpt4 key购买 nike

我想遍历文档中的所有字段并将文本放在 wdFieldIndexEntry 类型的字段之后,但字段不像书签那样具有范围值。

下面是我最接近的:

foreach( Field f in document.Fields)
{
if( f.Type == WdFieldType.wdFieldIndexEntry)
{
// f.Range.InsertAfter("{{Some After text}}"); // <- no Range field
f.Code.InsertAfter("{{Some After text}}"); // puts text inside field
}
}

如上所述,将文本放入代码中(不足为奇)。如何获取字段位置/范围以便我可以在字段之前或之后插入文本?

最佳答案

实际上,字段 返回Range 对象。大多数字段类型可以返回两种范围:一种用于 Field.Code,另一种用于 Field.Result

索引字段的特殊之处在于它只返回Field.Code。这是字段 { brackets } 中的文本。因此,返回此 Range 不会将焦点放在字段之外,但您可以到达那里...

首先将范围“折叠”到它的终点(将其想象成按向右箭头进行选择)。然后将范围的起点向文档末尾移动一个字符 - 现在它在字段之外。

Word.Range rngField = null;
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
object oMoveCharacter = Word.WdUnits.wdCharacter;
object oOne = 1;
foreach( Field f in document.Fields)
{
if( f.Type == WdFieldType.wdFieldIndexEntry)
{
rngField = f.Code;
rngField.Collapse(ref oCollapseEnd);
rngField.MoveStart(ref oMoveCharacter, ref oOne);
rngField.InsertAfter("{{Some After text}}"); }
}

关于C# 互操作 : How to determine a range of a Field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51635894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com