WinForms:ListBox יצירת ארוע שיקפוץ לאחר שינוי מספר השורות
-
יש לי בתוכנית כמה תיבות רשימה שלאחר שאני מיבא לשם שורות או מוחק שורות אני צריך לבצע כמה שורות קוד קבועות ואני מוצא את עצמי כותב את אותן השורות קוד מחדש עבור כל תיבת רשימה פעמיים לפחות, אחד לאחר שאני מוסיף שורות ואחד לאחר שאני מוחק, חשבתי שארוע שיקפוץ לאחר שמספר השורות בתיבת הרשימה משתנה יוכל לעזור לי, וכך אצור מטפל אחד עבור כל התיבות רשימה שיבצע את שורות הקוד הקבועות.
והשאלה היא איך עושים ארוע כזה?
בתודה לכולם!
פורסם במקור בפורום CODE613 ב21/08/2013 09:43 (+03:00)
-
אפשר במקום לעקוב אחרי הליסטבוקס לעקוב אחרי ליסט (לליסט יש אירוע שינוי) ולקשר את הליסטבוקס לליסט.
הנה דוגמת קוד:
Dim binList As New BindingList(Of String) AddHandler binList.AddingNew, Sub(s, e1) Beep() binList.Add("1") binList.Add("2") binList.Add("3") binList.Add("עוד") binList.Add("ועוד") ListBox1.DataSource = binList
השורה הראשונה יוצרת סוג של ליסט (מיוחד קצת, כי הרגיל הוא לא מתרפרש אחרי שינויים),
שורה 3 רושמת אירוע,
ושורה 13 מאגדת את הליסט לליסטבוקס.פורסם במקור בפורום CODE613 ב21/08/2013 19:53 (+03:00)
-
רעיון נפלא!
אז אולי אפשר ליעל את זה עוד וליצור פקד ליסט בוקס מותאם אישית שפונקציית ADD שלו לא תיבא לליסטבוקס אלא לליסט
וממילא כל פעם שאני אעשה ADD בתוכנית - יקפוץ הארוע. בקיצור לעטוף את הליסטבוקס והליסט ביחד וכך לקבל את היתרונות של שניהם יחד.פורסם במקור בפורום CODE613 ב22/08/2013 00:06 (+03:00)
-
הבחור הביא פה 2 שאלות.
- מה קרה למיקרוסופט ששכחו להכניס אירוע בעת הוספת אייטם?????
- שנגמר לו הדיו במסך, ולמה לכתוב כפול.
אז על אחרון ראשון וראשון אחרון.
אפי' שלא הועלת בטובך להביא את הקוד, אז אכן יש כמה אפשרויות או את ה"בינדינגליסט" שממנו אתה ממלא את האלמנטים(אייטמים) כמו שכתב לך דוד ממנו תיצור טיפוס יורש שמכיל את הקוד בעת אירוע הוספת אייטם ואז את הבינדינג היורש לכל התיבות רשימה. ואתה ממלא כל אחד לפי הצרכים שלך. או שאתה יוצר ירושה לתיבת רשימה שתכיל מאפיין הוספת אייטם משלך שבתוכו יהיה מושתל אירוע דליגייט שאתה תיצור לבד. וכך תצליח להיות יותר מוצלח מביל-גייטס, ואותו דבר אתה גם יכול לעשות לליסט רגיל להוסיף לו אייטמים על ידי מאפיין פרטי ולשתול בו אירוע מה שבעצם הכינו לך כבר בבינדינג רק ששם הוא מכיל עוד כמה דברים שלא יודע אם אתה צריך אותם.
ולשאלה הראשונה, כיון שלא נוספים לבד אלמנטים אלא יש איזה שהוא כפתור או אירוע שגורם לכך ואם כן באותו מקום אתה גם יכול להוסיף את מה שאתה רוצה . ובליסט רגיל ודאי שאין אירוע כי זה מכביד על הרשימה וזה אמור להיות אופטימייזד כמה שיותר, לכן יש את הליסיטים הכבדים כמו הבינדינג וכדו'.
פורסם במקור בפורום CODE613 ב22/08/2013 00:34 (+03:00)