FieldNoteRef

FieldNoteRef class

实现 NOTEREF 字段。

要了解更多信息,请访问使用字段文档文章。

public class FieldNoteRef : Field

构造函数

姓名描述
FieldNoteRef()默认构造函数。

特性

姓名描述
BookmarkName { get; set; }获取或设置书签的名称。
DisplayResult { get; }获取表示显示字段结果的文本。
End { get; }获取代表字段结束的节点。
Format { get; }获得FieldFormat提供对字段格式进行类型化访问的对象。
InsertHyperlink { get; set; }获取或设置是否插入指向书签段落的超链接。
InsertReferenceMark { get; set; }插入与脚注引用 或尾注引用样式具有相同字符格式的引用标记。
InsertRelativePosition { get; set; }获取或设置是否插入书签段落的相对位置。
IsDirty { get; set; }获取或设置字段的当前结果是否由于对文档所做的其他修改而不再正确(陈旧)。
IsLocked { get; set; }获取或设置字段是否被锁定(不应重新计算其结果)。
LocaleId { get; set; }获取或设置字段的 LCID。
Result { get; set; }获取或设置字段分隔符和字段结尾之间的文本。
Separator { get; }获取表示字段分隔符的节点。可以是无效的.
Start { get; }获取表示字段开始的节点。
virtual Type { get; }获取 Microsoft Word 字段类型。

方法

姓名描述
GetFieldCode()返回字段开始和字段分隔符之间的文本(如果没有分隔符,则返回字段结束)。 包括子字段的字段代码和字段结果。
GetFieldCode(bool)返回字段开始和字段分隔符之间的文本(如果没有分隔符,则返回字段结束)。
Remove()从文档中移除该字段。返回紧接该字段之后的节点。如果该字段的末尾是其父节点的最后一个 child ,则返回其父段落。如果该字段已被移除,则返回无效的.
Unlink()执行字段取消链接。
Update()执行字段更新。如果字段已在更新,则抛出异常。
Update(bool)执行字段更新。如果字段已在更新,则抛出异常。

评论

插入由指定书签标记的脚注或尾注的标记。

例子

显示如何使用 NOTEREF 字段交叉引用脚注。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.Write("CrossReference: ");

FieldNoteRef field = (FieldNoteRef)builder.InsertField(FieldType.FieldNoteRef, false); // <--- 不要更新字段
field.BookmarkName = "CrossRefBookmark";
field.InsertHyperlink = true;
field.InsertReferenceMark = true;
field.InsertRelativePosition = false;
builder.Writeln();

builder.StartBookmark("CrossRefBookmark");
builder.Write("Hello world!");
builder.InsertFootnote(FootnoteType.Footnote, "Cross referenced footnote.");
builder.EndBookmark("CrossRefBookmark");
builder.Writeln();

doc.UpdateFields();

// 此字段仅在旧版本的 Microsoft Word 中有效。
doc.Save(ArtifactsDir + "Field.NOTEREF.doc");

显示插入 NOTEREF 字段,并修改其外观。

public void FieldNoteRef()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    // 创建一个带有 NOTEREF 字段将引用的脚注的书签。
    InsertBookmarkWithFootnote(builder, "MyBookmark1", "Contents of MyBookmark1", "Footnote from MyBookmark1");

    // 此 NOTEREF 字段将显示所引用书签内的脚注的编号。
    // 设置 InsertHyperlink 属性可以让我们通过 Ctrl + 单击 Microsoft Word 中的字段跳转到书签。
    Assert.AreEqual(" NOTEREF  MyBookmark2 \\h",
        InsertFieldNoteRef(builder, "MyBookmark2", true, false, false, "Hyperlink to Bookmark2, with footnote number ").GetFieldCode());

    // 使用 \p 标志时,在脚注编号之后,该字段还会显示书签相对于该字段的位置。
    // Bookmark1 位于此字段上方,包含脚注编号 1,因此更新时结果将为“上方 1”。
    Assert.AreEqual(" NOTEREF  MyBookmark1 \\h \\p",
        InsertFieldNoteRef(builder, "MyBookmark1", true, true, false, "Bookmark1, with footnote number ").GetFieldCode());

    // Bookmark2 位于此字段下方,包含脚注编号 2,因此该字段将显示“2 Below”。
    // \f 标志使数字 2 以与实际文本中的脚注编号标签相同的格式出现。
    Assert.AreEqual(" NOTEREF  MyBookmark2 \\h \\p \\f",
        InsertFieldNoteRef(builder, "MyBookmark2", true, true, true, "Bookmark2, with footnote number ").GetFieldCode());

    builder.InsertBreak(BreakType.PageBreak);
    InsertBookmarkWithFootnote(builder, "MyBookmark2", "Contents of MyBookmark2", "Footnote from MyBookmark2");

    doc.UpdatePageLayout();
    doc.UpdateFields();
    doc.Save(ArtifactsDir + "Field.NOTEREF.docx");
}

/// <summary>
/// 使用文档生成器插入具有指定属性的 NOTEREF 字段。
/// </summary>
private static FieldNoteRef InsertFieldNoteRef(DocumentBuilder builder, string bookmarkName, bool insertHyperlink, bool insertRelativePosition, bool insertReferenceMark, string textBefore)
{
    builder.Write(textBefore);

    FieldNoteRef field = (FieldNoteRef)builder.InsertField(FieldType.FieldNoteRef, true);
    field.BookmarkName = bookmarkName;
    field.InsertHyperlink = insertHyperlink;
    field.InsertRelativePosition = insertRelativePosition;
    field.InsertReferenceMark = insertReferenceMark;
    builder.Writeln();

    return field;
}

/// <summary>
/// 使用文档生成器插入一个命名书签,并在末尾添加脚注。
/// </summary>
private static void InsertBookmarkWithFootnote(DocumentBuilder builder, string bookmarkName, string bookmarkText, string footnoteText)
{
    builder.StartBookmark(bookmarkName);
    builder.Write(bookmarkText);
    builder.InsertFootnote(FootnoteType.Footnote, footnoteText);
    builder.EndBookmark(bookmarkName);
    builder.Writeln();
}

也可以看看