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());

    // Закладка2 находится под этим полем и содержит сноску номер 2, поэтому в поле будет отображаться «2 ниже».
    // Флаг \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();
}

Смотрите также