FieldPrivate

FieldPrivate class

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

public class FieldPrivate : Field

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

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

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

Имя Описание
DisplayResult { get; } Получает текст, представляющий результат отображаемого поля.
End { get; } Получает узел, представляющий конец поля.
Format { get; } ПолучаетFieldFormat объект, предоставляющий типизированный доступ к форматированию поля.
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) Выполняет обновление поля. Выдает, если поле уже обновляется.

Примечания

Предоставляет частную область хранения. Это поле используется для хранения данных для документов, преобразованных из форматов файлов other .

Примеры

Показывает, как обрабатывать поля PRIVATE.

{
    // Откройте документ Corel WordPerfect, который мы преобразовали в формат .docx.
    Document doc = new Document(MyDir + "Field sample - PRIVATE.docx");

    // Документы WordPerfect 5.x/6.x, подобные загруженному нами, могут содержать PRIVATE поля.
    // Microsoft Word сохраняет PRIVATE поля во время операций загрузки/сохранения,
    // но не предоставляет для них никакой функциональности.
    FieldPrivate field = (FieldPrivate)doc.Range.Fields[0];

    Assert.AreEqual(" PRIVATE \"My value\" ", field.GetFieldCode());
    Assert.AreEqual(FieldType.FieldPrivate, field.Type);

    // Мы также можем вставлять ЧАСТНЫЕ поля с помощью конструктора документов.
    DocumentBuilder builder = new DocumentBuilder(doc);
    builder.InsertField(FieldType.FieldPrivate, true);

    // Эти поля не являются жизнеспособным способом защиты конфиденциальной информации.
    // Если не требуется обратная совместимость со старыми версиями WordPerfect,
    // мы можем безопасно удалить эти поля. Мы можем сделать это, используя реализацию DocumentVisiitor.
    Assert.AreEqual(2, doc.Range.Fields.Count);

    FieldPrivateRemover remover = new FieldPrivateRemover();
    doc.Accept(remover);

    Assert.AreEqual(2, remover.GetFieldsRemovedCount());
    Assert.AreEqual(0, doc.Range.Fields.Count);
}

/// <summary>
/// Удаляет все встречающиеся поля PRIVATE.
/// </summary>
public class FieldPrivateRemover : DocumentVisitor
{
    public FieldPrivateRemover()
    {
        mFieldsRemovedCount = 0;
    }

    public int GetFieldsRemovedCount()
    {
        return mFieldsRemovedCount;
    }

    /// <summary>
    /// Вызывается, когда в документе встречается узел FieldEnd.
    /// Если узел принадлежит ЧАСТНОМУ полю, все поле удаляется.
    /// </summary>
    public override VisitorAction VisitFieldEnd(FieldEnd fieldEnd)
    {
        if (fieldEnd.FieldType == FieldType.FieldPrivate)
        {
            fieldEnd.GetField().Remove();
            mFieldsRemovedCount++;
        }

        return VisitorAction.Continue;
    }

    private int mFieldsRemovedCount;
}

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