Hoe te werken met lijsten in .NET

Hoe te werken met lijsten in .NET

Hoe te werken met lijsten in .NET

Genummerde en opsommingstekstlijsten in een Word-document worden opgebouwd uit drie samenwerkende objecten: List, de herbruikbare nummerdefinitie; ListFormat, die een specifieke alinea vertelt bij welke lijst en welk niveau deze hoort; en ListLevel, die de werkelijke opmaak voor één niveau bevat. Deze gids laat zien hoe je een lijst op een alinea toepast, afzonderlijke lijsten voorkomt dat ze een teller delen, alinea’s tussen niveaus verplaatst, en nummer- en opsommingstekenopmaak aanpast met Aspose.Words FOSS voor .NET.


Stap-voor-stap gids

Stap 1: Een lijst toepassen op een alinea

Gebruik ListFormat.ApplyBulletDefault() of ApplyNumberDefault() op de opmaak van een alinea om de standaard opsomming of genummerde lijst van Word in één oproep toe te passen — dit is de snelste manier om een standaardlijst toe te passen. Voor een specifiek vooraf gedefinieerd formaat in plaats van de standaard, roep Document.Lists (een ListCollection) .Add(listTemplate) aan met een ListTemplate-waarde zoals BulletDisk, BulletSquare, NumberArabicDot of NumberUppercaseRomanDot om een List te maken van een van de ingebouwde formaten van Word, of AddSingleLevelList(listTemplate) voor een enkel-niveau variant. Zodra een alinea lijstopmaak heeft, rapporteert ListFormat.IsListItem true, en ListFormat.List/ListLevelNumber identificeren welke lijst en welk niveau het gebruikt.


Stap 2: Een nieuwe groep alinea’s een onafhankelijke nummering geven

Paragrafen waarvan ListFormat.List naar hetzelfde gedeelde List object wijst, gaan verder met dezelfde teller. Wanneer een nieuwe groep paragrafen een nummering nodig heeft die onafhankelijk opnieuw start vanaf 1, roep ListCollection.AddCopy(srcList) aan om een bestaande lijstdefinitie te dupliceren, en pas vervolgens de kopie toe op de nieuwe paragrafen in plaats van het origineel te hergebruiken. ListCollection.GetListByListId(listId) haalt een specifieke lijst op via zijn ListId wanneer je er een wilt opzoeken in plaats van er een te maken, en Count meldt hoeveel lijsten het document momenteel heeft.


Stap 3: Verplaats een alinea tussen lijstniveaus

Gebruik ListFormat.ListIndent() om een alinea één niveau dieper in de lijst te verplaatsen, en ListOutdent() om deze één niveau minder diep te verplaatsen — dezelfde handelingen die Word uitvoert voor Tab en Shift+Tab aan het begin van een lijstalinea. Geef de voorkeur aan deze methoden boven het direct instellen van ListLevelNumber, omdat ze de lijstopmaak van de alinea intern consistent houden. Roep RemoveNumbers() aan om de lijstopmaak volledig van een alinea te verwijderen.


Stap 4: Pas het nummeringsformaat van een lijstniveau aan

Bereik een specifiek niveau via List.ListLevels (een ListLevelCollection), stel vervolgens ListLevel.NumberStyle in (een NumberStyle waarde zoals Arabic, UppercaseRoman, LowercaseLetter of Bullet) en NumberFormat — de opmaakstring die het nummer combineert met letterlijke tekst zoals een punt of haakje — samen, omdat een niet-overeenkomende combinatie onverwachte weergave oplevert. StartAt bepaalt het startnummer van het niveau, en RestartAfterLevel regelt welke hogere niveau-increment dit niveau’s teller opnieuw start — stel dit expliciet in bij geneste lijsten in plaats van te vertrouwen op het standaard herstartgedrag. Alignment (Left, Center, Right) en TrailingCharacter (Tab, Space, Nothing) bepalen de labelpositie en de scheidingsteken tussen het label en de alinea-tekst, samen met TabPosition, NumberPosition en TextPosition voor een precieze lay-out. IsLegal dwingt juridische stijl nummering (altijd Arabisch) af, ongeacht NumberStyle.


Stap 5: Voeg een afbeeldingsteken toe aan een lijstniveau

Roep ListLevel.CreatePictureBullet() aan op het doelniveau om een afbeeldingsteken-definitie te maken, lever vervolgens de ImageData van het teken voordat je eventuele bestaande tekstteken-opmaak op hetzelfde niveau verwijdert. Roep DeletePictureBullet() aan om een afbeeldingsteken te verwijderen en terug te gaan naar tekstgebaseerde tekenopmaak.


Stap 6: Inspecteer het gerenderde label van een lijstitem

ListLabel beschrijft het label dat daadwerkelijk wordt gerenderd voor één lijstitem-instantie, verkregen via de alinea-opmaak van het item. LabelString is de letterlijke tekst die Word weergeeft — zoals “3.” of “•” — LabelValue is de onderliggende numerieke waarde, en Font is de eigen opmaak van het label, onafhankelijk van de opmaak van de alinea-tekst. Om de waarde van een label op een willekeurige positie in de reeks te berekenen zonder de hele lijst te renderen, roep ListLevel.GetEffectiveValue(index, numberStyle, customNumberStyleFormat) aan.


Veelvoorkomende problemen en oplossingen

Twee alinea’s die onafhankelijk genummerd moeten worden, vervolgen dezelfde reeks. Beide alinea’s’ ListFormat.List verwijst naar dezelfde gedeelde List object. Geef de tweede groep zijn eigen lijst via ListCollection.AddCopy(srcList) in plaats van dezelfde opnieuw te gebruiken List.

Een aangepast nummeringsformaattekenreeks wordt niet weergegeven zoals verwacht. ListLevel.NumberFormat komt niet overeen met het verwachte patroon voor het niveau’s NumberStyle. Verifieer NumberFormat and NumberStyle worden consistent ingesteld voor het niveau dat wordt bewerkt.

Lijstinspringing ziet er verkeerd uit na het programatisch wijzigen van niveaus. ListLevelNumber werd direct ingesteld zonder de gerelateerde positie-eigenschappen bij te werken. Gebruik ListFormat.ListIndent()/ListOutdent() in plaats van instellen ListLevelNumber direct.

Een afbeeldingsbullet verschijnt niet op een niveau. Er is geen afbeeldingsbullet gemaakt voor dat niveau, of de standaard tekst-bulletopmaak is nog actief. Roep ListLevel.CreatePictureBullet() aan en lever de afbeeldingsgegevens aan voordat de tekst-bulletopmaak wordt verwijderd.

Een stijl-gekoppelde lijst reageert niet op directe opmaakwijzigingen. Check List.IsListStyleReference — de opmaak van een stijl-refererende lijst wordt bepaald door de gekoppelde Style (via List.Style), niet door de lijst rechtstreeks te bewerken. Vergelijk met IsListStyleDefinition om een lijst te onderscheiden die zijn eigen opmaak definieert.


Veelgestelde vragen

Wat is het verschil tussen List en ListFormat?

List is de herbruikbare nummering- of opsommingdefinitie die over alinea’s wordt gedeeld. ListFormat is per alinea — het wijst op welke List een specifieke alinea gebruikt en op welk niveau, via ListFormat.List en ListLevelNumber.

Hoe controleer ik of een alinea al deel uitmaakt van een lijst?

Lees ListFormat.IsListItem over de opmaak van de alinea. Als true, identificeren ListFormat.List en ListLevelNumber tot welke lijst en niveau het behoort.

Hoe zorg ik ervoor dat een nieuwe lijst vanaf 1 begint te nummeren, onafhankelijk van een bestaande lijst?

Gebruik ListCollection.AddCopy(srcList) om een onafhankelijke kopie van de lijstdefinitie te maken, en pas vervolgens de kopie toe op de nieuwe alinea’s in plaats van de originele List opnieuw te gebruiken, omdat die dezelfde teller zou voortzetten.

Hoe maak ik een opsomming met opsommingstekens of een genummerde lijst vanaf nul?

Gebruik ListFormat.ApplyBulletDefault() of ApplyNumberDefault() voor de standaardopmaak van Word, of ListCollection.Add(listTemplate) met een ListTemplate waarde om te beginnen vanaf een vooraf gedefinieerde opmaak en het resulterende List.ListLevels daarvan aan te passen.

Hoe krijg ik een getalopmaak zoals “1)” in plaats van “1.”?

Stel ListLevel.NumberFormat op het betreffende niveau in op de gewenste opmaakreeks, samen met NumberStyle voor de cijferstijl zelf.


Zie ook

 Nederlands