Class FieldSeq
内容
[
隐藏
]FieldSeq class
实现 SEQ 字段。
public class FieldSeq : Field
构造函数
姓名 | 描述 |
---|---|
FieldSeq() | 默认构造函数。 |
特性
姓名 | 描述 |
---|---|
BookmarkName { get; set; } | 获取或设置一个书签名称,该名称引用文档中其他位置而不是当前位置的项目。 |
DisplayResult { get; } | 获取表示显示字段结果的文本。 |
End { get; } | 获取代表字段end的节点。 |
Format { get; } | 得到一个FieldFormat 提供对字段格式的类型化访问的对象。 |
InsertNextNumber { get; set; } | 获取或设置是否为指定item插入下一个序号 |
IsDirty { get; set; } | 获取或设置字段的当前结果是否由于对文档的其他修改而不再正确(陈旧)。 |
IsLocked { get; set; } | 获取或设置字段是否被锁定(不应重新计算其结果)。 |
LocaleId { get; set; } | 获取或设置字段的LCID。 |
ResetHeadingLevel { get; set; } | 获取或设置一个表示标题级别的整数,以将序列号重置为。 如果数字不存在,则返回 -1。 |
ResetNumber { get; set; } | 获取或设置一个整数以将序列号重置为。如果数字不存在,则返回 -1。 |
Result { get; set; } | 获取或设置字段分隔符和字段结尾之间的文本。 |
Separator { get; } | 获取表示字段分隔符的节点。可以为空。 |
SequenceIdentifier { get; set; } | 获取或设置分配给要编号的一系列项目的名称。 |
Start { get; } | 获取表示字段开始的节点。 |
virtual Type { get; } | 获取 Microsoft Word 字段类型。 |
方法
姓名 | 描述 |
---|---|
GetFieldCode() | 返回字段开始和字段分隔符之间的文本(或字段结束,如果没有分隔符)。 包括子字段的字段代码和字段结果。 |
GetFieldCode(bool) | 返回字段开始和字段分隔符之间的文本(如果没有分隔符,则返回字段结束)。 |
Remove() | 从文档中删除字段。在字段之后返回一个节点。如果字段的结尾是其父节点的最后一个 child ,则返回其父段落。如果该字段已被删除,则返回 无效的. |
Unlink() | 执行字段取消链接。 |
Update() | 执行字段更新。如果该字段已被更新,则抛出。 |
Update(bool) | 执行字段更新。如果该字段已被更新,则抛出。 |
评论
按顺序编号文档中的章节、表格、图形和其他用户定义的项目列表。
例子
显示使用 SEQ 字段创建编号。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// SEQ 字段显示在每个 SEQ 字段处递增的计数。
// 这些字段还为每个唯一的命名序列维护单独的计数
// 由 SEQ 字段的“SequenceIdentifier”属性标识。
// 插入一个 SEQ 字段,它将显示“MySequence”的当前计数值,
// 在使用“ResetNumber”属性将其设置为 100 之后。
builder.Write("#");
FieldSeq fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
fieldSeq.ResetNumber = "100";
fieldSeq.Update();
Assert.AreEqual(" SEQ MySequence \\r 100", fieldSeq.GetFieldCode());
Assert.AreEqual("100", fieldSeq.Result);
// 使用另一个 SEQ 字段显示此序列中的下一个数字。
builder.Write(", #");
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
fieldSeq.Update();
Assert.AreEqual("101", fieldSeq.Result);
// 插入 1 级标题。
builder.InsertBreak(BreakType.ParagraphBreak);
builder.ParagraphFormat.Style = doc.Styles["Heading 1"];
builder.Writeln("This level 1 heading will reset MySequence to 1");
builder.ParagraphFormat.Style = doc.Styles["Normal"];
// 从同一序列中插入另一个 SEQ 字段,并将其配置为将每个标题的计数重置为 1。
builder.Write("\n#");
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
fieldSeq.ResetHeadingLevel = "1";
fieldSeq.Update();
// 上面的标题是一个级别 1 的标题,所以这个序列的计数被重置为 1。
Assert.AreEqual(" SEQ MySequence \\s 1", fieldSeq.GetFieldCode());
Assert.AreEqual("1", fieldSeq.Result);
// 移动到这个序列的下一个数字。
builder.Write(", #");
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
fieldSeq.InsertNextNumber = true;
fieldSeq.Update();
Assert.AreEqual(" SEQ MySequence \\n", fieldSeq.GetFieldCode());
Assert.AreEqual("2", fieldSeq.Result);
doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.SEQ.ResetNumbering.docx");
显示如何组合目录和序列字段。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// TOC 字段可以在其目录中为文档中找到的每个 SEQ 字段创建一个条目。
// 每个条目都包含包含 SEQ 字段的段落,
// 以及该字段出现的页码。
FieldToc fieldToc = (FieldToc)builder.InsertField(FieldType.FieldTOC, true);
// 将此 TOC 字段配置为具有值为“MySequence”的 SequenceIdentifier 属性。
fieldToc.TableOfFiguresLabel = "MySequence";
// 将此 TOC 字段配置为仅选取书签范围内的 SEQ 字段
// 命名为“TOCBookmark”。
fieldToc.BookmarkName = "TOCBookmark";
builder.InsertBreak(BreakType.PageBreak);
Assert.AreEqual(" TOC \\c MySequence \\b TOCBookmark", fieldToc.GetFieldCode());
// SEQ 字段显示在每个 SEQ 字段处递增的计数。
// 这些字段还为每个唯一的命名序列维护单独的计数
// 由 SEQ 字段的“SequenceIdentifier”属性标识。
// 插入一个序列标识符与 TOC 匹配的 SEQ 字段
// TableOfFiguresLabel 属性。此字段不会在 TOC 中创建条目,因为它在外部
// 书签的边界由“BookmarkName”指定。
builder.Write("MySequence #");
FieldSeq fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
builder.Writeln(", will not show up in the TOC because it is outside of the bookmark.");
builder.StartBookmark("TOCBookmark");
// 此 SEQ 字段的序列与 TOC 的“TableOfFiguresLabel”属性匹配,并且在书签的范围内。
// 包含此字段的段落将作为条目显示在目录中。
builder.Write("MySequence #");
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
builder.Writeln(", will show up in the TOC next to the entry for the above caption.");
// 此 SEQ 字段的序列与 TOC 的“TableOfFiguresLabel”属性不匹配,
// 并且在书签的范围内。它的段落不会作为条目出现在目录中。
builder.Write("MySequence #");
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "OtherSequence";
builder.Writeln(", will not show up in the TOC because it's from a different sequence identifier.");
// 此 SEQ 字段的序列与 TOC 的“TableOfFiguresLabel”属性匹配,并且在书签的范围内。
// 该字段还引用了另一个书签。该书签的内容将出现在此 SEQ 字段的 TOC 条目中。
// SEQ 字段本身不会显示该书签的内容。
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
fieldSeq.BookmarkName = "SEQBookmark";
Assert.AreEqual(" SEQ MySequence SEQBookmark", fieldSeq.GetFieldCode());
// 创建一个书签,其内容将显示在 TOC 条目中,因为上面的 SEQ 字段引用它。
builder.InsertBreak(BreakType.PageBreak);
builder.StartBookmark("SEQBookmark");
builder.Write("MySequence #");
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
builder.Writeln(", text from inside SEQBookmark.");
builder.EndBookmark("SEQBookmark");
builder.EndBookmark("TOCBookmark");
doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.SEQ.Bookmark.docx");
显示如何使用 SEQ 字段填充 TOC 字段的条目。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// TOC 字段可以在其目录中为文档中找到的每个 SEQ 字段创建一个条目。
// 每个条目都包含包含 SEQ 字段的段落和该字段出现的页码。
FieldToc fieldToc = (FieldToc)builder.InsertField(FieldType.FieldTOC, true);
// SEQ 字段显示在每个 SEQ 字段处递增的计数。
// 这些字段还为每个唯一的命名序列维护单独的计数
// 由 SEQ 字段的“SequenceIdentifier”属性标识。
// 使用“TableOfFiguresLabel”属性为 TOC 命名一个主序列。
// 现在,此 TOC 将仅在“SequenceIdentifier”设置为“MySequence”的 SEQ 字段中创建条目。
fieldToc.TableOfFiguresLabel = "MySequence";
// 我们可以在“PrefixedSequenceIdentifier”属性中命名另一个 SEQ 字段序列。
// 此前缀序列中的 SEQ 字段不会创建 TOC 条目。
// 从主序列 SEQ 字段创建的每个 TOC 条目现在也将显示
// 前缀序列当前在产生条目的主序列 SEQ 字段中打开。
fieldToc.PrefixedSequenceIdentifier = "PrefixSequence";
// 每个 TOC 条目将立即在左侧显示前缀序列计数
// 主序列 SEQ 字段出现的页码。
// 我们可以指定将出现在这两个数字之间的自定义分隔符。
fieldToc.SequenceSeparator = ">";
Assert.AreEqual(" TOC \\c MySequence \\s PrefixSequence \\d >", fieldToc.GetFieldCode());
builder.InsertBreak(BreakType.PageBreak);
// 使用 SEQ 字段填充此 TOC 有两种方法。
// 1 - 插入一个属于 TOC 前缀序列的 SEQ 字段:
// 此字段会将“PrefixSequence”的 SEQ 序列计数加 1。
// 由于该字段不属于识别的主序列
// 通过 TOC 的“TableOfFiguresLabel”属性,它不会作为条目出现。
FieldSeq fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "PrefixSequence";
builder.InsertParagraph();
Assert.AreEqual(" SEQ PrefixSequence", fieldSeq.GetFieldCode());
// 2 - 插入一个属于 TOC 主序列的 SEQ 字段:
// 此 SEQ 字段将在 TOC 中创建一个条目。
// TOC 条目将包含 SEQ 字段所在的段落以及它出现的页码。
// 此条目还将显示前缀序列当前所处的计数,
// 通过 TOC 的 SeqenceSeparator 属性中的值与页码分隔。
// “PrefixSequence”计数为 1,此主序列 SEQ 字段位于第 2 页,
// 分隔符是“>”,所以条目会显示“1>2”。
builder.Write("First TOC entry, MySequence #");
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";
Assert.AreEqual(" SEQ MySequence", fieldSeq.GetFieldCode());
// 插入一个页面,将前缀序列前移2,插入一个SEQ字段,之后创建一个TOC条目。
// 前缀序列现在在 2,主序列 SEQ 字段在第 3 页,
// 所以 TOC 条目将在其页数处显示“2>3”。
builder.InsertBreak(BreakType.PageBreak);
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "PrefixSequence";
builder.InsertParagraph();
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
builder.Write("Second TOC entry, MySequence #");
fieldSeq.SequenceIdentifier = "MySequence";
doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.TOC.SEQ.docx");
也可以看看
- class Field
- 命名空间 Aspose.Words.Fields
- 部件 Aspose.Words