Δουλεύοντας με Λίστες
Εργασία με Λίστες
Αυτός ο οδηγός δείχνει πώς οι αριθμημένες και με κουκκίδες λίστες αντιπροσωπεύονται και ελέγχονται στο Aspose.Words FOSS για .NET. Ένα List είναι ένας επαναχρησιμοποιήσιμος ορισμός λίστας που μοιράζεται από κάθε παράγραφο που το χρησιμοποιεί, το ListFormat είναι ο τρόπος με τον οποίο μια μεμονωμένη παράγραφος αναφέρεται σε μια λίστα και στο τρέχον επίπεδό της, και το ListLevel περιέχει την πραγματική μορφοποίηση αρίθμησης ή κουκκίδας για ένα επίπεδο λίστας.
Το Αντικείμενο Λίστας και ListCollection
List αντιπροσωπεύει έναν ορισμό λίστας — τους κανόνες αρίθμησης που ένα έγγραφο μπορεί να εφαρμόσει σε πολλές παραγράφους. Το List.ListId την ταυτοποιεί, το List.IsMultiLevel αναφέρει αν ορίζει περισσότερα από ένα επίπεδο, και το List.ListLevels επιστρέφει ένα ListLevelCollection που περιέχει ένα ListLevel ανά επίπεδο που ορίζει η λίστα. Τα List.IsListStyleDefinition και IsListStyleReference διακρίνουν μια λίστα που ορίζει τη δική της μορφοποίηση από αυτή που αναφέρεται σε μορφοποίηση μέσω ενός συνδεδεμένου Style (διαθέσιμο μέσω List.Style). Οι λίστες κάθε εγγράφου προσεγγίζονται μέσω του Document.Lists, που επιστρέφει ένα ListCollection: το ListCollection.Add(listTemplate) δημιουργεί μια νέα λίστα από μία από τις προορισμένες μορφές ListTemplate του Word, το Add(listStyle) δημιουργεί μία από ένα Style, το AddSingleLevelList(listTemplate) δημιουργεί μια παραλλαγή μονοεπίπεδου, και το AddCopy(srcList) αντιγράφει μια υπάρχουσα λίστα — χρήσιμο όταν θέλετε οι παράγραφοι να έχουν ανεξάρτητη αρίθμηση (μια φρέσκια επανεκκίνηση) αντί να μοιράζονται τον ίδιο μετρητή. Το ListCollection.GetListByListId(listId) ανακτά μια συγκεκριμένη λίστα, και το Count αναφέρει πόσες λίστες περιέχει το έγγραφο.
Εφαρμογή Λιστών σε Παραγράφους με ListFormat
ListFormat, που προέρχεται από τη μορφοποίηση μιας παραγράφου, ελέγχει σε ποια λίστα ανήκει μια παράγραφος και σε ποιο επίπεδο. Το ListFormat.List είναι το List που χρησιμοποιεί η παράγραφος, και το ListFormat.ListLevelNumber είναι το μηδενικό επίπεδο μέσα σε αυτή τη λίστα· το IsListItem αναφέρει αν η παράγραφος αποτελεί μέρος λίστας καθόλου. Τα ApplyBulletDefault() και ApplyNumberDefault() εφαρμόζουν την προεπιλεγμένη μορφοποίηση λίστας με κουκκίδες ή αριθμημένη του Word σε μια παράγραφο με μία κλήση, το RemoveNumbers() αφαιρεί τη μορφοποίηση λίστας, και τα ListIndent()/ListOutdent() μετακινούν μια παράγραφο πιο βαθιά ή πιο ρηχά στα επίπεδα της λίστας — οι ίδιες ενέργειες που εκτελεί το Word όταν πατιέται Tab ή Shift+Tab στην αρχή μιας παραγράφου λίστας.
Επίπεδα Λίστας και Στυλ Αρίθμησης
ListLevel περιέχει τη μορφοποίηση για ένα επίπεδο λίστας: NumberStyle (μια τιμή enum NumberStyle όπως αραβικοί ή ρωμαϊκοί αριθμοί), NumberFormat (η συμβολοσειρά μορφής που συνδυάζει τον αριθμό με κυριολεκτικό κείμενο, όπως τελεία ή παρενθέσεις), StartAt (ο αρχικός αριθμός) και RestartAfterLevel (ποιο ανώτερο επίπεδο επανεκκινεί τον μετρητή αυτού του επιπέδου). Alignment (μια τιμή ListLevelAlignment: Left, Center, Right) και TrailingCharacter (μια τιμή ListTrailingCharacter: Tab, Space, Nothing) ελέγχουν πώς το ετικέτα τοποθετείται και χωρίζεται από το κείμενο της παραγράφου, μαζί με τα TabPosition, NumberPosition και TextPosition για ακριβή διάταξη. IsLegal επιβάλλει αριθμητική μορφή τύπου νομικού (πάντα αραβική, ανεξάρτητα από NumberStyle), και LinkedStyle συσχετίζει το επίπεδο με μια παράγραφο Style. Για εικόνες κουκίδων, τα CreatePictureBullet() και DeletePictureBullet() διαχειρίζονται μια εικόνα κουκίδας ImageData, και το ListLevel.Font ορίζει τη μορφοποίηση του αριθμού ή του χαρακτήρα της κουκίδας. Το ListLevel.GetEffectiveValue(index, numberStyle, customNumberStyleFormat) υπολογίζει την πραγματική τιμή ετικέτας σε δεδομένη θέση στη σειρά αρίθμησης.
Ετικέτες Λιστών και Προκαθορισμένα Πρότυπα
ListLabel περιγράφει την εμφανιζόμενη ετικέτα για μια συγκεκριμένη εμφάνιση στοιχείου λίστας — το LabelString είναι το κυριολεκτικό κείμενο που εμφανίζει το Word (όπως “3.” ή “•”), το LabelValue είναι η υποκείμενη αριθμητική τιμή, και το Font είναι η μορφοποίηση της ετικέτας. Το ListTemplate είναι ένα enum των προκαθορισμένων μορφών λίστας του Word (στυλ κουκίδων όπως BulletDefault, BulletDisk, BulletCircle, BulletSquare, BulletDiamonds και αριθμημένες μορφές), που χρησιμοποιείται με το ListCollection.Add(listTemplate) για να ξεκινήσει από μια ενσωματωμένη μορφή αντί να δημιουργεί κάθε ιδιότητα ξεχωριστά.
Συμβουλές και Καλές Πρακτικές
- Χρησιμοποιήστε το
ListCollection.AddCopy(srcList)όταν μια νέα ομάδα παραγράφων χρειάζεται αριθμητική λίστα που ξεκινά ξανά ανεξάρτητα, αντί να επαναχρησιμοποιείτε έναListπου είναι ήδη συνδεδεμένο με άλλες παραγράφους. - Προτιμήστε το
ListFormat.ApplyNumberDefault()/ApplyBulletDefault()για τυπικές λίστες αντί για χειροκίνητη ρύθμιση κάθε ιδιότηταςListLevel. - Ελέγξτε το
List.IsListStyleReferenceέναντι τουIsListStyleDefinitionπριν τροποποιήσετε άμεσα τη μορφοποίηση της λίστας — η μορφοποίηση μιας λίστας που αναφέρεται σε στυλ μπορεί να ελέγχεται από το συνδεδεμένο τηςStyle. - Ορίστε το
RestartAfterLevelρητά σε ένθετες λίστες αντί να βασίζεστε στη προεπιλεγμένη συμπεριφορά επανεκκίνησης όταν η αρίθμηση πρέπει να μηδενιστεί σε συγκεκριμένα επίπεδα διάρθρωσης. - Χρησιμοποιήστε το
ListFormat.ListIndent()/ListOutdent()για να μετακινήσετε μια παράγραφο μεταξύ επιπέδων λίστας αντί να ορίσετε τοListLevelNumberαπευθείας, καθώς αυτές οι μέθοδοι διατηρούν τη μορφοποίηση λίστας της παραγράφου εσωτερικά συνεπή.
Συνηθισμένα Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
| Δύο παραγράφοι που πρέπει να αριθμούνται ανεξάρτητα συνεχίζουν την ίδια ακολουθία | Το ListFormat.List και των δύο παραγράφων αναφέρεται στο ίδιο κοινό αντικείμενο List | Δώστε στη δεύτερη παράγραφο τη δική της λίστα μέσω του ListCollection.AddCopy(srcList) αντί να επαναχρησιμοποιήσετε το ίδιο List |
| Μια προσαρμοσμένη συμβολοσειρά μορφοποίησης αρίθμησης δεν εμφανίζεται όπως αναμένεται | Το ListLevel.NumberFormat δεν ταιριάζει με το αναμενόμενο μοτίβο για το NumberStyle του επιπέδου | Επαληθεύστε ότι τα NumberFormat και NumberStyle έχουν οριστεί σταθερά για το επίπεδο που επεξεργάζεστε |
| Η εσοχή της λίστας φαίνεται λανθασμένη μετά την προγραμματιστική αλλαγή των επιπέδων | Το ListLevelNumber ορίστηκε άμεσα χωρίς να ενημερωθούν οι σχετικές ιδιότητες θέσης | Χρησιμοποιήστε ListFormat.ListIndent()/ListOutdent() αντί να ορίζετε το ListLevelNumber άμεσα |
| Δεν εμφανίζεται η εικόνα κουκκίδας | Δεν δημιουργήθηκε εικόνα κουκκίδας για το επίπεδο, ή η προεπιλεγμένη μορφοποίηση κειμενικής κουκκίδας παραμένει ενεργή | Καλέστε το ListLevel.CreatePictureBullet() και παρέχετε τα δεδομένα εικόνας πριν αφαιρέσετε τη μορφοποίηση κειμενικής κουκκίδας |
FAQ
Ποια είναι η διαφορά μεταξύ 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 για να ξεκινήσετε από μία από τις προεπιλεγμένες μορφές του Word και να προσαρμόσετε το προκύπτον List.ListLevels από εκεί.
Πώς ελέγχω τη μορφή αριθμού, όπως το «1)» αντί για το «1.»;
Ορίστε το ListLevel.NumberFormat στο σχετικό επίπεδο στην επιθυμητή συμβολοσειρά μορφής, μαζί με το NumberStyle για το ίδιο το στυλ αριθμητικού.
API Reference Σύνοψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
List | Ορισμός επαναχρησιμοποιήσιμης λίστας (αρίθμηση/κουκίδα) |
ListCollection | Η συλλογή όλων των λιστών σε ένα έγγραφο |
ListCollection.Add(listTemplate) / AddCopy(srcList) | Δημιουργήστε μια λίστα από ένα προκαθορισμένο πρότυπο ή αντιγράψτε μια υπάρχουσα |
ListFormat | Αναφορά ανά παράγραφο σε ένα List και στο τρέχον επίπεδο |
ListFormat.ApplyBulletDefault() / ApplyNumberDefault() | Εφαρμόστε την προεπιλεγμένη μορφοποίηση με κουκίδες ή αριθμημένη σε μια παράγραφο |
ListLevel | Μορφοποίηση αριθμών/κουκίδων για ένα επίπεδο ενός List |
ListLevel.NumberStyle / NumberFormat | Το στυλ αριθμητικού και η συμβολοσειρά μορφής για ένα επίπεδο |
ListLabel | Η αποδοθείσα ετικέτα (κείμενο και τιμή) για ένα συγκεκριμένο στοιχείο λίστας |
ListTemplate | Enum των προκαθορισμένων μορφών λίστας του Word |