כיצד לעבוד עם רשימות ב-.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 לסגנון הספרה עצמו.