Πώς να εργαστείτε με λίστες στο .NET
Πώς να εργαστείτε με λίστες στο .NET
Οι αριθμημένες και με κουκκίδες λίστες σε ένα έγγραφο του Word δημιουργούνται από τρία συνεργαζόμενα αντικείμενα: List, τον επαναχρησιμοποιήσιμο ορισμό αρίθμησης· ListFormat, που λέει σε μια συγκεκριμένη παράγραφο σε ποια λίστα και επίπεδο ανήκει· και ListLevel, που περιέχει την πραγματική μορφοποίηση για ένα επίπεδο. Αυτός ο οδηγός δείχνει πώς να εφαρμόσετε μια λίστα σε μια παράγραφο, να αποτρέψετε το μοίρασμα μετρητή μεταξύ ξεχωριστών λιστών, να μετακινήσετε παραγράφους μεταξύ επιπέδων, και να προσαρμόσετε την αρίθμηση και τη μορφοποίηση των κουκκίδων με το Aspose.Words FOSS για .NET.
Οδηγός βήμα-βήμα
Βήμα 1: Εφαρμόστε μια λίστα σε μια παράγραφο
Χρησιμοποιήστε το ListFormat.ApplyBulletDefault() ή το ApplyNumberDefault() στη μορφοποίηση μιας παραγράφου για να εφαρμόσετε την προεπιλεγμένη λίστα με κουκκίδες ή αριθμημένη λίστα του Word με μία κλήση — αυτή είναι η γρηγορότερη μέθοδος για να εφαρμόσετε μια τυπική λίστα. Για συγκεκριμένη προορισμένη μορφή αντί της προεπιλογής, καλέστε το Document.Lists (ένα ListCollection) .Add(listTemplate) με μια τιμή ListTemplate όπως BulletDisk, BulletSquare, NumberArabicDot ή NumberUppercaseRomanDot για να δημιουργήσετε ένα List από μία από τις ενσωματωμένες μορφές του Word, ή AddSingleLevelList(listTemplate) για μια μονοεπίπεδη παραλλαγή. Μόλις μια παράγραφος έχει μορφοποίηση λίστας, το ListFormat.IsListItem αναφέρει true, και τα ListFormat.List/ListLevelNumber προσδιορίζουν ποια λίστα και επίπεδο χρησιμοποιεί.
Βήμα 2: Δώστε σε μια νέα ομάδα παραγράφων ανεξάρτητη αρίθμηση
Οι παράγραφοι των οποίων το ListFormat.List δείχνει στο ίδιο κοινό List αντικείμενο συνεχίζουν τον ίδιο μετρητή. Όταν μια νέα ομάδα παραγράφων χρειάζεται αρίθμηση που επανεκκινείται από το 1 ανεξάρτητα, καλέστε το ListCollection.AddCopy(srcList) για να αντιγράψετε έναν υπάρχοντα ορισμό λίστας, και στη συνέχεια εφαρμόστε το αντίγραφο στις νέες παραγράφους αντί να επαναχρησιμοποιήσετε το αρχικό. Το ListCollection.GetListByListId(listId) ανακτά μια συγκεκριμένη λίστα με το ListId όταν χρειάζεται να την εντοπίσετε αντί να δημιουργήσετε μια, και το Count αναφέρει πόσες λίστες έχει αυτή τη στιγμή το έγγραφο.
Βήμα 3: Μετακίνηση μιας παραγράφου μεταξύ επιπέδων λίστας
Χρησιμοποιήστε το ListFormat.ListIndent() για να μετακινήσετε μια παράγραφο ένα επίπεδο πιο βαθιά στη λίστα της, και το ListOutdent() για να τη μετακινήσετε ένα επίπεδο πιο ρηχά — οι ίδιες ενέργειες που εκτελεί το Word για Tab και Shift+Tab στην αρχή μιας παραγράφου λίστας. Προτιμήστε αυτές τις μεθόδους αντί για την άμεση ρύθμιση του ListLevelNumber, επειδή διατηρούν τη μορφοποίηση λίστας της παραγράφου εσωτερικά συνεπή. Καλέστε το RemoveNumbers() για να αφαιρέσετε εντελώς τη μορφοποίηση λίστας από μια παράγραφο.
Βήμα 4: Προσαρμογή μορφής αρίθμησης επιπέδου λίστας
Φτάστε σε ένα συγκεκριμένο επίπεδο μέσω του List.ListLevels (ένα ListLevelCollection), στη συνέχεια ορίστε το ListLevel.NumberStyle (μια τιμή NumberStyle όπως το Arabic, UppercaseRoman, LowercaseLetter ή το Bullet) και το NumberFormat — τη συμβολοσειρά μορφής που συνδυάζει τον αριθμό με κυριολεκτικό κείμενο όπως τελεία ή παρενθέσεις — μαζί, επειδή ένα ασύμφωνο ζεύγος προκαλεί απρόσμενη απόδοση. Το StartAt ορίζει τον αρχικό αριθμό του επιπέδου, και το RestartAfterLevel ελέγχει ποιο ανώτερο επίπεδο επαναφέρει τον μετρητή αυτού του επιπέδου — ορίστε το ρητά σε ενσωματωμένες λίστες αντί να βασίζεστε στην προεπιλεγμένη συμπεριφορά επανεκκίνησης. Τα Alignment (Left, Center, Right) και TrailingCharacter (Tab, Space, Nothing) ελέγχουν τη θέση της ετικέτας και το διαχωριστικό μεταξύ της ετικέτας και του κειμένου της παραγράφου, μαζί με τα TabPosition, NumberPosition και TextPosition για ακριβή διάταξη. Το IsLegal επιβάλλει αρίθμηση σε νομικό στυλ (πάντα αραβική) ανεξάρτητα από το NumberStyle.
Βήμα 5: Προσθήκη εικόνας-κουκκίδας σε επίπεδο λίστας
Καλέστε το ListLevel.CreatePictureBullet() στο επιλεγμένο επίπεδο για να δημιουργήσετε έναν ορισμό εικόνας-κουκκίδας, στη συνέχεια παρέχετε το ImageData της κουκκίδας πριν αφαιρέσετε τυχόν υπάρχουσα μορφοποίηση κειμένου-κουκκίδας στο ίδιο επίπεδο. Καλέστε το DeletePictureBullet() για να αφαιρέσετε μια εικόνα-κουκκίδα και να επιστρέψετε σε μορφοποίηση κουκκίδας βασισμένη σε κείμενο.
Βήμα 6: Επιθεώρηση της αποδιδόμενης ετικέτας ενός στοιχείου λίστας
ListLabel περιγράφει την ετικέτα που πραγματικά αποδίδεται για ένα στιγμιότυπο στοιχείου λίστας, προερχόμενο από τη μορφοποίηση παραγράφου του στοιχείου. LabelString είναι το κυριολεκτικό κείμενο που εμφανίζει το Word — όπως “3.” ή “•” — LabelValue είναι η υποκείμενη αριθμητική τιμή, και Font είναι η δική της μορφοποίηση της ετικέτας, ανεξάρτητη από τη μορφοποίηση του κειμένου της παραγράφου. Για να υπολογίσετε την τιμή μιας ετικέτας σε τυχαία θέση στη σειρά χωρίς να αποδώσετε ολόκληρη τη λίστα, καλέστε το ListLevel.GetEffectiveValue(index, numberStyle, customNumberStyleFormat).
Συνηθισμένα Προβλήματα και Διορθώσεις
Δύο παραγράφοι που πρέπει να αριθμούνται ανεξάρτητα συνεχίζουν την ίδια ακολουθία. Και των δύο παραγράφων’ ListFormat.List αναφέρεται στο ίδιο κοινό List αντικείμενο. Δώστε στη δεύτερη ομάδα τη δική της λίστα μέσω ListCollection.AddCopy(srcList) αντί να επαναχρησιμοποιήσετε το ίδιο List.
Μια προσαρμοσμένη συμβολοσειρά μορφής αρίθμησης δεν εμφανίζεται όπως αναμένεται. ListLevel.NumberFormat δεν ταιριάζει με το πρότυπο που αναμένεται για το επίπεδο NumberStyle. Επαληθεύστε NumberFormat and NumberStyle ρυθμίζονται σταθερά για το επίπεδο που επεξεργάζεται.
Η εσοχή της λίστας φαίνεται λανθασμένη μετά την προγραμματισμένη αλλαγή επιπέδων. ListLevelNumber ορίστηκε απευθείας χωρίς ενημέρωση των σχετικών ιδιοτήτων θέσης. Χρησιμοποιήστε ListFormat.ListIndent()/ListOutdent() αντί για ορισμό ListLevelNumber απευθείας.
Η εικόνα-κουκκίδα δεν εμφανίζεται σε ένα επίπεδο. Δεν δημιουργήθηκε εικόνα-κουκκίδα για αυτό το επίπεδο, ή η προεπιλεγμένη μορφοποίηση κειμενικής κουκκίδας είναι ακόμη ενεργή. Κλήστε ListLevel.CreatePictureBullet() και παρέχετε τα δεδομένα της εικόνας πριν αφαιρέσετε τη μορφοποίηση κειμενικής κουκκίδας.
Μια λίστα με σύνδεση στυλ δεν ανταποκρίνεται σε άμεσες αλλαγές μορφοποίησης. Check List.IsListStyleReference — η μορφοποίηση μιας λίστας που αναφέρεται σε στυλ ελέγχεται από τη συνδεδεμένη της Style (μέσω List.Style), όχι με την επεξεργασία της λίστας απευθείας. Συγκρίνετε με IsListStyleDefinition για να διακρίνετε μια λίστα που ορίζει τη δική της μορφοποίηση.
Συχνές Ερωτήσεις
Ποια είναι η διαφορά μεταξύ List και ListFormat;
List είναι ο επαναχρησιμοποιήσιμος ορισμός αρίθμησης ή κουκκίδας που μοιράζεται μεταξύ παραγράφων. ListFormat είναι ανά παράγραφο — δείχνει σε ποιο List χρησιμοποιεί μια συγκεκριμένη παράγραφος και σε ποιο επίπεδο, μέσω ListFormat.List και ListLevelNumber.
Πώς μπορώ να ελέγξω αν μια παράγραφος αποτελεί ήδη μέρος μιας λίστας;
Διαβάστε το ListFormat.IsListItem σχετικά με τη μορφοποίηση της παραγράφου. Εάν true, τα ListFormat.List και ListLevelNumber προσδιορίζουν σε ποια λίστα και επίπεδο ανήκει.
Πώς μπορώ να κάνω μια νέα λίστα να ξεκινά την αρίθμηση από το 1 ανεξάρτητα από μια υπάρχουσα λίστα;
Χρησιμοποιήστε το ListCollection.AddCopy(srcList) για να δημιουργήσετε ένα ανεξάρτητο αντίγραφο του ορισμού λίστας, στη συνέχεια εφαρμόστε το αντίγραφο στις νέες παραγράφους αντί να επαναχρησιμοποιήσετε το αρχικό List, το οποίο θα συνέχιζε τον ίδιο μετρητή.
Πώς μπορώ να δημιουργήσω μια λίστας με κουκκίδες ή αριθμημένη από το μηδέν;
Χρησιμοποιήστε το ListFormat.ApplyBulletDefault() ή το ApplyNumberDefault() για την προεπιλεγμένη μορφοποίηση του Word, ή το ListCollection.Add(listTemplate) με μια τιμή ListTemplate για να ξεκινήσετε από μια προκαθορισμένη μορφή και να προσαρμόσετε το προκύπτον List.ListLevels από εκεί.
Πώς μπορώ να έχω μορφή αριθμού όπως “1)” αντί για “1.”;
Ορίστε το ListLevel.NumberFormat στο σχετικό επίπεδο στην επιθυμητή συμβολοσειρά μορφής, μαζί με το NumberStyle για το ίδιο το στυλ αριθμητικού.