c# .net lecture 5 win forms (2)

30
C# .Net Lecture 5 מרצה: דורון רייפמן מבוא לשפת#C ול- .Net Framework WinForms (2).

Upload: doron-raifman

Post on 14-Jan-2017

21 views

Category:

Software


0 download

TRANSCRIPT

Page 1: C# .net lecture 5 win forms (2)

C# .Net Lecture 5

רייפמן דורון :מרצה

Net Framework. -ול C#לשפת מבוא

WinForms (2).

Page 2: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

Data Binding :ס"ניהול בינעתיק את , כדי לשמור את הפתרון הקודם•

.כל הפרויקט וניצור פרויקט חדש

ונדגים שימוש GridView -נחליף את מילוי ה•

.Data Binding -מתקדם ב

.BindingSourceנוסיף משתנה פרטי מסוג •

Page 3: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

:ס מילוי הקונטרול"ניהול ביונלמד איך GridView -נחליף את מילוי ה•

Data Binding עובד.

שימו לב שאנחנו יוצרים קונטרול מסוג •

DataGridViewTextBoxColumn בתוך

.GridView -התאים של ה

שימו לב שאנחנו אומרים לו מה שם העמודה •

.של השדות שלנו לפרופרטיםואיך קוראים

.אחרים קונטרוליםאפשר לייצר גם •

לדטה הביינדינגאנחנו מצמידים את אובייקט •

.גריד

מכיל בתוכו הביינדינגשימו לב שאובייקט •

כמו קולקשןשזה Listמסוג אוביקט

ArrayList כטמפלייטאבל ממומש.

יודע לעשות . הוא מכיר את אובייקט סטודנט•

.שלו לפרופרטיסחדש ולגשת אינסטנס

Page 4: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

עדכון :ס"ניהול בי (.כמו קודם)עכשיו זה נראה ככה •

.אבל יש הבדל עצום•

.נעדכן את ערך של שם הסטודנט•

העדכון נשמר ברשימה המקורית בתוך אובייקט •

School . תסגרו את הפורם ותחזרו תראו את

.העידכון

.Closeנוסיף טיפול לכפתור •

.מגניב

.צריך לטפל בזה. מחיקה והוספה לא נשמרים•

Page 5: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

הוספה ומחיקה :ס"ניהול בישנוספה רשומה Eventנוסיף תפיסת •

.ושנמחקה רשומה

נוסיף משתנה בוליאני שאומר אם הפורם •

.עכשיו בטעינה

.נממש את ההוספה•

למחיקה אין לנו שרות עדיין באובייקטים •

.שעשינו

Page 6: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

הוספה ומחיקה :ס"ניהול בי .נראה איך זה עובד•

זה . תראו את ערכי ברירת המחדל לשדות•

.Listשלנו שנקרא מה מהקונסטרקטור

יצאתי וחזרתי והנה הרשומה . הוספתי רשומה•

.אפילו ממוינת נכון, מופיעה

. מספר התלמידים לא התעדכן בפורם הראשי•

נייצר פונקציה שמעדכנת את . נתקן את זה

נקרא לה באתחול ואחרי הסגירה של . התצוגה

.פורם רשימת סטודנטים

Page 7: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

הוספה ומחיקה :ס"ניהול בינתקן את . מספר התלמידים לא התעדכן בפורם הראשי•

נקרא לה . נייצר פונקציה שמעדכנת את התצוגה. זה

.באתחול ואחרי הסגירה של פורם רשימת סטודנטים

אין . כשחוזרים הוא מופיע שוב. 8מחקתי את סטודנט •

.לא נטפל בזה עכשיו. לנו מחיקה באובייקטים

Page 8: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

רשימת מקצועות :ס"ניהול בינממש פורם רשימת מקצועות ונוסיף קריאה •

.לפורם מהפורם הראשי

Page 9: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

קריאות בהצלבה :ס"ניהול בי

נוסיף כפתור לשני הפורומים של •

.שקורא לפורם השני, הרשימות

נממש את הקריאה לפורם השני •

.מהכפתור

שימו לב איך מוצאים בקלות על •

.איזה שורה עומדים

Page 10: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

התוצאה :ס"ניהול בי :והתוצאה•

.כל זה כמובן כולל עריכה•

חסר רק מימוש של מחיקה •

.באובייקטים

Page 11: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

כמה שפצורים אחרונים :ס"ניהול בי

עושה רושם שכדאי להוסיף פנל בחלק העליון . יש קושי בהתמצאות בכל החלונות שנפתחים1.

.שאומר איזו רשימה אנחנו עורכים ואיך הגענו אליה

משם –לא נראה הגיוני שהמשתמש שלנו יעבור לרשימת הסטודנטים בבית הספר , כמו כן2.

. ומשם שוב לרשימת הסטודנטים במקצוע וחוזר חלילה –לרשימת המקצועות שהסטודנט לומד

.כדאי לסגור את הכפתור כשנמצאים בקומה השנייה

כתוצאה . העתקתי את כפתור סגור מהפורם הראשון, כשעשיתי את פורם הרשימה של המקצועות3.

כי יש להם את . כשאני לוחץ על סגור כששתי הרשימות פתוחות הוא סוגר את שניהם במכה, מכך

.אותו שם

.כנראה שגם כדאי להוסיף טיפול במחיקת רשומה4.

.תמיד יש עוד מה לשפר. בממשק משתמש אין דבר כזה שפצורים אחרונים: הערה חשובה

Page 12: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

שפצור התמצאות :ס"ניהול בי

-ל Docנעשה לו . נוסיף פנל לשני הפורומים של הרשימות•

Top.

נעשה לו . שיציג מאיפה הגענו Labelעל הפנל נשים •

Anchor ל- Top-Right .נעשה אותו מימין לשמאל .

Autosize false נמתח אותו מקצה לקצה.

להאם propfullבעזרת ופרופרטינוסיף שם משתנה •

.מקומת בית הספר ומה הכותרת שתוצג על הפנל העליון

Page 13: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

שפצור התמצאות :ס"ניהול בי

באתחול הפורם הראשי נוסיף קריאת •

.Label -החדשים ועדכון ה הפרופרטיס

נעדכן בפורומים של הרשימות גם אם •

.הכפתור פעיל

Page 14: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

שפצור התמצאות :ס"ניהול בי

בפורומים של הרשימות נעדכן את •

הקריאה כדי לעדכן את הכותרת ואת

.הקומה

Page 15: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

שפצור התמצאות :ס"ניהול בי

:התוצאה•

סגור

פתוח

התמצאות

Page 16: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

כפתור סגירה :ס"ניהול בי

שכשהעתקתי את הכפתור , גיליתי, לאחר שעתיים של חיפושים בגוגל ונבירה בדיזיינר ובקוד•

.ולכן נסגרו שני החלונות DialogResult OKהעתקתי אותו עם , לפתיחת הרשימה השנייה

•WinForm שאתם יכולים לבלות עליהם שלושה , שנראות כלום, אבל שתדעו שיש בעיות, זה כיף

.ימים עד שאתם מוצאים פתרון

Page 17: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

מחיקה :ס"ניהול בינממש מחיקת מקצוע לסטודנט ומחיקת סטודנט •

.למקצוע

.הרשימות מחיקה אובייקטינממש בשני •

מחיקת סטודנט ממקצוע Schoolנממש באובייקט •

.שזה אותו דבר כמו מחיקת מקצוע מסטודנט

.נממש מחיקת מקצוע ומחיקת סטודנט מבית הספר•

Page 18: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

מחיקה :ס"ניהול בי .כעת נחבר לממשק המשתמש•

נמחק , במידה ואנחנו פורם רשימה שנקרא מבית הספר•

.אותו מבית הספר

.במידה ולא נקראנו מבית הספר נמחק רק את השיוך•

מקצוע לרשימת סטודנטים ), אין לנו את השם השני, אופס•

הוא מופיע בכותרת אבל לא בתור שדה ( ולהפך בהצלבה

.נוסיף את שדה השם לפורומי הרשימות. שם

Page 19: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

מחיקה :ס"ניהול בי .נטפל בהשמת השמות בקריאות הצולבות•

אין צורך לטפל מבית הספר במקרה שנקרא •

.המשתנהבהגדרת nullשמתי . בהשמה

השאלה מהיכן נקרא זה לעולם לא בזכות •

.יקרה

Page 20: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

בדיקת מחיקה :ס"ניהול בי .נראה איך זה עובד•

.ס"מהבי 9מחקתי סטודנט •

.תלמידים 19ס ויש עכשיו רק "חזרתי לבי•

.והוא לא מופיע יותר, פתחתי שוב את רשימת התלמידים•

Page 21: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

בדיקת מחיקה :ס"ניהול בי, 9אמור להיות גם במקצוע 9סטודנט •

.בוא נבדוק אם הוא ירד משם

.10נבדוק גם מקצוע •

.עובד•

.צריך לבדוק גם את הכיוון ההפוך•

צריך לבדוק מחיקת סטודנט ממקצוע בלי •

.למחוק מבית הספר

Page 22: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

בדיקת מחיקה :ס"ניהול בימחקתי את סטודנט , 10הלכתי למקצוע •

.והוא ירד מהרשימה 7

פתאום מופיע . סגרתי ופתחתי שוב•

.באג. לא עבד. חזרה

.נלך לבדוק מה הבעיה•

מתכנת טוב בודק היטב את התוכנה •

.שהוא כותב

QAמתכנת שחוטף הרבה באגים מה •

.נקרא לשיחת נזיפה

מתכנת טוב יודע לדבג מהר בעיות •

.בקוד

Page 23: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

בדיקת מחיקה :ס"ניהול בי

קודם כל לעשות קוד בדבגינגאני אוהב •

.רוויו בעיניים

ככה מוצאים גם באגים אחרים שלא קרו •

.ויוצרים קוד יותר נקי מבאגים

.זה הקוד שעושה את המשימה•

?מישהו רואה מה הבעיה בו•

(-;. אני יוצא לעשן. קחו עשר דקות•

מי שמגלה שיבוא אלי לעישון לספר לי •

.שגילה

Page 24: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

בדיקת מחיקה :ס"ניהול בי (-;. אם גיליתם. יפה•

.עם השמות ההפוכים Removeהקריאה ל •

Exceptionלא זרק Dictionary -אבל למה ה•

כמו שהוא עושה על חיפוש והכנסה של אובייקט

?שכבר קיים

OCDלא היה Dictionaryכי המתכנת של •

.כמוני

.במידה למתכנת OCDזה חשוב •

של מיקרוסופט על לדקומנטציהבואו נלך •

.הפונקציה הזו

.Exceptionהוא מחזיר שגיאה ולא זורק •

עליו שכך אדע שמשהו לא " סמכתי"אני לתומי •

.בואו נבדוק מה הוא מחזיר. טוב קרה

Page 25: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

בדיקת מחיקה :ס"ניהול ביאנחנו החבאנו את פרטי המימוש ושם לא •

.מחזיר שהדיקשנריהחזרנו את מה

שתתנהג , אפשר לסדר את הפונקציה שלנו•

.יותר יפה מהמתכנת של מיקרוסופט

אבל מאידך זה יכול לבלבל מתכנתים מנוסים •

.שישתמשו באובייקטים שלנו

.דבגרבואו נדבג עם •

. SudentList Removeנלך לפונקציה של •

.Go to definition –עושים קליק ימני

. הוספתי השמה למשתנה בוליאני של התוצאה•

על ידי הקלקה איפה BreakPointשמתי

.הוא עצר. F5עם בדבגרנריץ . שהעיגול האדום

.falseרואים שהחזיר •

. אתם רואים שהפונקציה שלנו לא מחזירה ערך•

.ונתקן גם את הבאג. כדאי לתקן אותה

Page 26: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

בדיקת מחיקה :ס"ניהול בי

.אחרי התיקון•

.לבדוק, לבדוק, לבדוק•

.בכל האופנים שאפשר לבדוק, את כל המקרים•

כבר , טובה של מתכנת זה טוב בדיקתיות•

?אמרנו

.כמוהם boolתיקנתי גם שגם אני אחזיר •

.בשני במקומות, לא לשכוח•

Page 27: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

בדיקת מחיקה :ס"ניהול בי

.בדיקה•

.עובד•

בואו נתחיל מהסטודנט בבית הספר •

.ונראה שגם שם זה בסדר

.עובד•

Page 28: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

סיימנו :ס"ניהול בי

.סיימנו

?או מגניב, מגניב

Page 29: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

.אנחנו מבינים איך משתמשים באובייקטים ולמה חשוב שיהיו חזקים●

.WinFormלמדנו ממשק משתמש גרפי מסוג ●

.מימשנו תוכנה לניהול בית ספר●

.למדנו קצת לדבג●

?כה עד למדנו מה

Page 30: C# .net lecture 5 win forms (2)

C#.Net, רייפמן דורון

.DataBase -ו סריאליזציה, קבצים: שיעור הבא

.DBואז נלמד סריאליזציהשדרוג תכנת ניהול בית הספר לעבודה מול : שיעור אחרי

.ש הקרוב בחצות"להגשה עד מוצ. כמו שלמדנו בכיתה, להשלים ניהול בית הספר: שיעורי בית

.היו שם תיקונים. שימו לב שכדאי לקחת את האובייקטים מדוגמאות הקוד של השיעור הזה

?הלאה מה