FieldRef

FieldRef class

Implémente le champ REF.

public class FieldRef : Field

Constructeurs

Nom La description
FieldRef() Default_Constructor

Propriétés

Nom La description
BookmarkName { get; set; } Obtient ou définit le nom du signet référencé.
DisplayResult { get; } Obtient le texte qui représente le résultat du champ affiché.
End { get; } Obtient le nœud qui représente la fin du champ.
Format { get; } Obtient unFieldFormat objet qui fournit un accès typé au formatage du champ.
IncludeNoteOrComment { get; set; } Obtient ou définit s’il faut incrémenter les numéros de note de bas de page, de note de fin et d’annotation qui sont marqués par le signet, et insérer la note de bas de page, la note de fin et le texte de commentaire correspondants.
InsertHyperlink { get; set; } Obtient ou définit s’il faut créer un lien hypertexte vers le paragraphe marqué d’un signet.
InsertParagraphNumber { get; set; } Obtient ou définit s’il faut insérer le numéro de paragraphe du paragraphe référencé exactement tel qu’il apparaît dans le document.
InsertParagraphNumberInFullContext { get; set; } Obtient ou définit s’il faut insérer le numéro de paragraphe du paragraphe référencé dans son contexte complet.
InsertParagraphNumberInRelativeContext { get; set; } Obtient ou définit s’il faut insérer le numéro de paragraphe du paragraphe référencé dans un contexte relatif.
InsertRelativePosition { get; set; } Obtient ou définit s’il faut insérer la position relative du paragraphe référencé.
IsDirty { get; set; } Obtient ou définit si le résultat actuel du champ n’est plus correct (périmé) en raison d’autres modifications apportées au document.
IsLocked { get; set; } Obtient ou définit si le champ est verrouillé (ne doit pas recalculer son résultat).
LocaleId { get; set; } Obtient ou définit le LCID du champ.
NumberSeparator { get; set; } Obtient ou définit la séquence de caractères utilisée pour séparer les numéros de séquence et les numéros de page.
Result { get; set; } Obtient ou définit le texte qui se trouve entre le séparateur de champ et la fin du champ.
Separator { get; } Obtient le nœud qui représente le séparateur de champs. Peut être null.
Start { get; } Obtient le nœud qui représente le début du champ.
SuppressNonDelimiters { get; set; } Obtient ou définit s’il faut supprimer les caractères non délimiteurs.
virtual Type { get; } Obtient le type de champ Microsoft Word.

Méthodes

Nom La description
GetFieldCode() Renvoie le texte entre le début du champ et le séparateur de champ (ou la fin du champ s’il n’y a pas de séparateur). Le code de champ et le résultat du champ des champs enfants sont inclus.
GetFieldCode(bool) Renvoie le texte entre le début du champ et le séparateur de champ (ou la fin du champ s’il n’y a pas de séparateur).
Remove() Supprime le champ du document. Renvoie un nœud juste après le champ. Si la fin du champ est le dernier enfant de son nœud parent, renvoie son paragraphe parent. Si le champ est déjà supprimé, renvoie nul .
Unlink() Effectue la dissociation du champ.
Update() Effectue la mise à jour du champ. Lance si le champ est déjà mis à jour.
Update(bool) Effectue une mise à jour du champ. Lance si le champ est déjà mis à jour.

Remarques

Insère le texte ou les graphiques représentés par le signet spécifié.

Exemples

Montre comment créer un texte marqué d’un signet avec un champ SET, puis l’afficher dans le document à l’aide d’un champ REF.

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

 // Nommez le texte mis en signet avec un champ SET.
// Ce champ fait référence au "signet" et non à une structure de signet qui apparaît dans le texte, mais à une variable nommée.
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());

// Fait référence au signet par son nom dans un champ REF et affiche son contenu.
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");

Montre comment insérer des champs REF pour référencer des signets.

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

    // Nous appliquerons un format de liste personnalisé, où le nombre de crochets angulaires indique le niveau de liste auquel nous nous trouvons actuellement.
    builder.ListFormat.ApplyNumberDefault();
    builder.ListFormat.ListLevel.NumberFormat = "> \x0000";

    // Insère un champ REF qui contiendra le texte dans notre signet, agira comme un lien hypertexte et clonera les notes de bas de page du signet.
    FieldRef field = InsertFieldRef(builder, "MyBookmark", "", "\n");
    field.IncludeNoteOrComment = true;
    field.InsertHyperlink = true;

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

    // Insère un champ REF et affiche si le signet référencé est au-dessus ou en dessous.
    field = InsertFieldRef(builder, "MyBookmark", "The referenced paragraph is ", " this field.\n");
    field.InsertRelativePosition = true;

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

    // Affiche le numéro de liste du signet tel qu'il apparaît dans le document.
    field = InsertFieldRef(builder, "MyBookmark", "The bookmark's paragraph number is ", "\n");
    field.InsertParagraphNumber = true;

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

    // Affiche le numéro de liste du signet, mais avec les caractères non délimiteurs, tels que les crochets angulaires, omis.
    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());

    // Descend d'un niveau de liste.
    builder.ListFormat.ListLevelNumber++;
    builder.ListFormat.ListLevel.NumberFormat = ">> \x0001";

    // Affiche le numéro de liste du signet et les numéros de tous les niveaux de liste au-dessus.
    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);

    // Affiche les numéros de niveau de liste entre ce champ REF et le signet auquel il fait référence.
    field = InsertFieldRef(builder, "MyBookmark", "The bookmark's relative paragraph number is ", "\n");
    field.InsertParagraphNumberInRelativeContext = true;

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

    // À la fin du document, le signet apparaîtra comme un élément de liste ici.
    builder.Writeln("List level above bookmark");
    builder.ListFormat.ListLevelNumber++;
    builder.ListFormat.ListLevel.NumberFormat = ">>> \x0002";

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

/// <summary>
/// Demandez au générateur de document d'insérer un champ REF, de référencer un signet avec celui-ci et d'ajouter du texte avant et après.
/// </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;
}

Voir également