FieldRef

FieldRef class

Реализует поле REF.

Чтобы узнать больше, посетитеРабота с полями статья документации.

public class FieldRef : Field

Конструкторы

ИмяОписание
FieldRef()Конструктор по умолчанию.

Характеристики

ИмяОписание
BookmarkName { get; set; }Получает или задает имя указанной закладки.
DisplayResult { get; }Получает текст, представляющий результат отображаемого поля.
End { get; }Получает узел, представляющий конец поля.
Format { get; }ПолучаетFieldFormat объект, обеспечивающий типизированный доступ к форматированию поля.
IncludeNoteOrComment { get; set; }Получает или задает, следует ли увеличивать номера сносок, концевых сносок и примечаний, которые отмечены закладкой, и вставлять соответствующие сноски, концевые сноски и текст комментария.
InsertHyperlink { get; set; }Получает или задает необходимость создания гиперссылки на абзац, отмеченный закладкой.
InsertParagraphNumber { get; set; }Получает или задает, следует ли вставлять номер абзаца, на который указана ссылка, точно так, как он отображается в документе.
InsertParagraphNumberInFullContext { get; set; }Получает или задает, следует ли вставлять номер абзаца, на который указана ссылка, в полном контексте.
InsertParagraphNumberInRelativeContext { get; set; }Получает или задает, следует ли вставлять номер абзаца, на который имеется ссылка, в относительном контексте.
InsertRelativePosition { get; set; }Получает или задает, следует ли вставлять относительную позицию абзаца, на который указывает ссылка.
IsDirty { get; set; }Получает или устанавливает, является ли текущий результат поля более неправильным (устаревшим) из-за других изменений, внесенных в документ.
IsLocked { get; set; }Получает или задает, заблокировано ли поле (не следует пересчитывать результат).
LocaleId { get; set; }Получает или задает LCID поля.
NumberSeparator { get; set; }Получает или задает последовательность символов, которая используется для разделения порядковых номеров и номеров страниц.
Result { get; set; }Получает или задает текст, расположенный между разделителем полей и концом поля.
Separator { get; }Получает узел, представляющий разделитель полей. Возможнонулевой .
Start { get; }Получает узел, представляющий начало поля.
SuppressNonDelimiters { get; set; }Получает или задает необходимость подавления символов, не являющихся разделителями.
virtual Type { get; }Получает тип поля Microsoft Word.

Методы

ИмяОписание
GetFieldCode()Возвращает текст между началом поля и разделителем поля (или концом поля, если разделителя нет). Включены как код поля, так и результат поля дочерних полей.
GetFieldCode(bool)Возвращает текст между началом поля и разделителем полей (или концом поля, если разделителя нет).
Remove()Удаляет поле из документа. Возвращает узел сразу после поля. Если конец поля является последним дочерним его родительского узла, возвращает его родительский абзац. Если поле уже удалено, возвращаетсянулевой .
Unlink()Выполняет отсоединение поля.
Update()Выполняет обновление поля. Выдает, если поле уже обновляется.
Update(bool)Выполняет обновление поля. Выдает, если поле уже обновляется.

Примечания

Вставляет текст или графику, представленную указанной закладкой.

Примеры

Показывает, как создать текст с закладкой с помощью поля SET, а затем отобразить его в документе с помощью поля REF.

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

 // Назовите текст закладки с помощью поля SET.
// Это поле относится к «закладке», а не к структуре закладки, которая появляется в тексте, а к именованной переменной.
FieldSet fieldSet = (FieldSet)builder.InsertField(FieldType.FieldSet, false);
fieldSet.BookmarkName = "MyBookmark";
fieldSet.BookmarkText = "Hello world!";
fieldSet.Update();

Assert.AreEqual(" SET  MyBookmark \"Hello world!\"", fieldSet.GetFieldCode());

// Обращаемся к закладке по имени в поле REF и отображаем ее содержимое.
FieldRef fieldRef = (FieldRef)builder.InsertField(FieldType.FieldRef, true);
fieldRef.BookmarkName = "MyBookmark";
fieldRef.Update();

Assert.AreEqual(" REF  MyBookmark", fieldRef.GetFieldCode());
Assert.AreEqual("Hello world!", fieldRef.Result);

doc.Save(ArtifactsDir + "Field.SET.REF.docx");

Показывает, как вставлять поля REF в ссылочные закладки.

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

    builder.StartBookmark("MyBookmark");
    builder.InsertFootnote(FootnoteType.Footnote, "MyBookmark footnote #1");
    builder.Write("Text that will appear in REF field");
    builder.InsertFootnote(FootnoteType.Footnote, "MyBookmark footnote #2");
    builder.EndBookmark("MyBookmark");
    builder.MoveToDocumentStart();

    // Мы применим собственный формат списка, в котором количество угловых скобок указывает уровень списка, на котором мы сейчас находимся.
    builder.ListFormat.ApplyNumberDefault();
    builder.ListFormat.ListLevel.NumberFormat = "> \x0000";

    // Вставляем поле REF, которое будет содержать текст внутри нашей закладки, действовать как гиперссылка и клонировать сноски закладки.
    FieldRef field = InsertFieldRef(builder, "MyBookmark", "", "\n");
    field.IncludeNoteOrComment = true;
    field.InsertHyperlink = true;

    Assert.AreEqual(" REF  MyBookmark \\f \\h", field.GetFieldCode());

    // Вставляем поле REF и отображаем, находится ли указанная закладка выше или ниже него.
    field = InsertFieldRef(builder, "MyBookmark", "The referenced paragraph is ", " this field.\n");
    field.InsertRelativePosition = true;

    Assert.AreEqual(" REF  MyBookmark \\p", field.GetFieldCode());

    // Отображение номера закладки в списке, как он отображается в документе.
    field = InsertFieldRef(builder, "MyBookmark", "The bookmark's paragraph number is ", "\n");
    field.InsertParagraphNumber = true;

    Assert.AreEqual(" REF  MyBookmark \\n", field.GetFieldCode());

    // Отобразить номер списка закладок, но без опущенных символов, не являющихся разделителями, таких как угловые скобки.
    field = InsertFieldRef(builder, "MyBookmark", "The bookmark's paragraph number, non-delimiters suppressed, is ", "\n");
    field.InsertParagraphNumber = true;
    field.SuppressNonDelimiters = true;

    Assert.AreEqual(" REF  MyBookmark \\n \\t", field.GetFieldCode());

    // Переход на один уровень списка вниз.
    builder.ListFormat.ListLevelNumber++;
    builder.ListFormat.ListLevel.NumberFormat = ">> \x0001";

    // Отображение номера закладки в списке и номеров всех уровней списка над ней.
    field = InsertFieldRef(builder, "MyBookmark", "The bookmark's full context paragraph number is ", "\n");
    field.InsertParagraphNumberInFullContext = true;

    Assert.AreEqual(" REF  MyBookmark \\w", field.GetFieldCode());

    builder.InsertBreak(BreakType.PageBreak);

    // Отобразить номера уровней списка между этим полем REF и закладкой, на которую оно ссылается.
    field = InsertFieldRef(builder, "MyBookmark", "The bookmark's relative paragraph number is ", "\n");
    field.InsertParagraphNumberInRelativeContext = true;

    Assert.AreEqual(" REF  MyBookmark \\r", field.GetFieldCode());

    // В конце документа закладка появится здесь как элемент списка.
    builder.Writeln("List level above bookmark");
    builder.ListFormat.ListLevelNumber++;
    builder.ListFormat.ListLevel.NumberFormat = ">>> \x0002";

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

/// <summary>
/// Заставьте конструктор документов вставить поле REF, ссылаться на закладку и добавить текст до и после него.
/// </summary>
private static FieldRef InsertFieldRef(DocumentBuilder builder, string bookmarkName, string textBefore, string textAfter)
{
    builder.Write(textBefore);
    FieldRef field = (FieldRef)builder.InsertField(FieldType.FieldRef, true);
    field.BookmarkName = bookmarkName;
    builder.Write(textAfter);
    return field;
}

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