PracticU

שימוש במספר טפסים - Multiple Forms

בלי כתוביותעם כתוביות
PracticU › קורס WinForms - תוכנות רגילות בווינדוס › שימוש במספר טפסים - Multiple Forms
מילון מושגים:
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
גופן - העיצוב הגרפי של האותיות והתווים המוצגים בטקסט, הכולל צורה, סגנון וגודל.
תהליך - מופע של תוכנה שרצה בזיכרון, עם הקוד, הנתונים והמשאבים שהוקצו לה על ידי מערכת ההפעלה.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.
תמונה - קובץ גרפי המוצג על המסך. בהקשר של וירטואליזציה או Docker, תבנית מוכנה שממנה יוצרים מכונה או קונטיינר.

שימוש במספר טפסים - Multiple Forms
השיעור מסביר איך אפליקציה עם כמה טפסים בנויה נכון: טופס בסיס שמשותף לכולם, טופס ראשי, וטפסים משניים שמוצגים בצורה מודלית או לא מודלית, וכיצד מעבירים מידע ביניהם.
טופס בסיס (Base Form)
- טופס רגיל שנועד רק להחזיק הגדרות משותפות: מרכז המסך, צבע רקע וגופן אחידים, גודל קבוע (Fixed), ללא לחצן הגדלה.
- גם לוגו של החברה שמופיע בכל הטפסים נמצא כאן: PictureBox עם לחיצה שפותחת את אתר החברה (Process.Start).
- הרכיבים מוגדרים כפרטיים (private). הדובר הזהיר שאם מאפשרים לטפסים היורשים לשלוט במיקום, זה לא תמיד רצוי.
טפסים יורשים (Inherited Form)
- כשמוסיפים טופס חדש בוחרים Inherited Form ומגדירים את הבסיס. הטופס מקבל אוטומטית את כל ההגדרות והרכיבים של הבסיס.
- שינוי בבסיס מתפשט לכל הטפסים היורשים אחרי בנייה מחדש.
הצגה מודלית מול לא מודלית
- Show(): לא מודלית. ההצגה לא עוצרת את הקוד, והמשתמש יכול לעבור בין הטפסים. הדובר הדגים: אחרי Show ההודעה מוצגת מיד.
- ShowDialog(): מודלית. הקוד נעצר עד שהטופס נסגר, ואי אפשר לחזור לטופס הראשי בינתיים.
- כל טופס משני נשלח כ-Owner או כ-Parent, כך שהוא מתנהג כחלק מהטופס הראשי.
- Hide לפני ההצגה מסתיר את הטופס הראשי. הדובר הזהיר שבהצגה לא מודלית Hide אחרי Show לא יעבוד, כי הקוד ממשיך מיד.
העברת מידע בין טפסים
1. מהראשי לבן: מגדירים מאפיין ציבורי בטופס הבן, או מעבירים ערך לבנאי.
2. מהבן לראשי: הבן חושף מאפיין ציבורי שמחזיר את הערך מתיבת הטקסט. לא חושפים את כל התיבה, כדי לא לאפשר לקוד אחר לשנות אותה.
3. תוצאה של דיאלוג: לכל כפתור מגדירים DialogResult (OK או Cancel). בלחיצה הטופס נסגר והתוצאה נשמרת בתכונה DialogResult של הטופס. בטופס הראשי בודקים if (frm.DialogResult == DialogResult.OK) לפני שימוש בערך.
4. הדובר הזהיר שהשוואה בלי DialogResult. נכתבת לא נכון.
טופס לוגין לפני הטופס הראשי
- בפונקציית Main מציגים את טופס הלוגין עם ShowDialog. רק אם הפרטים נכונים הטופס הראשי נפתח.
- בדוגמה נבדקו שם משתמש וסיסמה מול ערכים קבועים, ואחרי שלוש טעויות הטופס נסגר.
- שדה הסיסמה מוגדר עם PasswordChar לכוכבית.
הגדרות משותפות בזמן ריצה
צבע רקע מותאם בזמן ריצה בטופס הבסיס: בפעולת Paint מציירים מלבן עם גרדיאנט לבן-שחור, והלייבלים מוגדרים שקופים כדי שהרקע יופיע מאחוריהם.
תרגיל
טופס ראשי עם לחצן שמציג טופס משני בצורה לא מודלית ומציג תמונה, ולחצן נוסף שפותח טופס מודלי לקליטת שם פרטי ושם משפחה, ומציג אותם בלייבל אחת בטופס הראשי. כל הטפסים יורשים מטופס בסיס אחד.
בסיום השיעור הסטודנט יודע לבנות טופס בסיס ולהוריש ממנו, להבדיל בין הצגה מודלית ללא מודלית, ולהעביר מידע בין טפסים בלי לחשוף את כל הרכיבים.
השיעור הבא בקורס: ממשק מרובה מסמכים - MDI

פרקי ההרצאה: שימוש במספר טפסים - Multiple Forms

  1. 00:00

    שימוש במספר טפסים

  2. 01:58

    בניית טופס בסיס BaseForm

  3. 07:23

    יצירת טופס יורש InheritedForm

  4. 09:02

    הרשאות גישה עם Modifiers

  5. 11:19

    לחצן להצגת טופס נוסף

  6. 15:50

    הצגה לא מודאלית עם Show

  7. 18:53

    ShowDialog והעברת מידע

  8. 21:47

    AcceptButton ו-CancelButton

תמלול ההרצאה: שימוש במספר טפסים - Multiple Forms

הטקסט המלא של הדקות הראשונות בהרצאה «שימוש במספר טפסים - Multiple Forms» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:04

    כעת אנחנו הולכים לראות כיצד ניתן להשתמש בתוכנית שאנחנו בונים במספר טפסים שלנו. בדרך כלל כשאנחנו בונים תוכנית אנחנו לא נרצה שיהיה בה רק טופס אחד, לדוגמה קלקולטור.

  2. 00:20

    יש פה רק טופס אחד ואין פה שום דבר אחר. אפילו בקלקולטור יש לנו אפשרות להציג עוד טופס של הבא. אבל כשאנחנו בונים אפליקציות בדרך כלל אנחנו נרצה שיהיה לנו מספר טפסים, ועכשיו אנחנו הולכים לראות איך אנחנו יכולים לבנות מספר טפסים בצורה נכונה, ואיך אנחנו הולכים לקרוא מטופס אחד לטופס אחר ולהציג אותו.

  3. 00:43

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

  4. 00:57

    כאשר יש לנו מספר טפסים בתוכנית, מספר מחלקות פורם, אז הולך להיות לנו מספר מחלקות שכל אחת מהן הולכת לרשת המחלקה פורום וכולם פורומים ויזואליים.

  5. 01:10

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

  6. 01:27

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

  7. 01:42

    אז איך אנחנו עושים את זה בלי לחזור על ההגדרות האלה בכל אחד מהטפסים שאנחנו הולכים להוסיף? אז התשובה, אנחנו הולכים להשתמש בקונספט של ההורשה.

  8. 01:55

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

  9. 02:15

    נצמצם אותו בצורה כזאת. ולטופס הבסיס שנקרא בייס פורם אנחנו הולכים להגדיר את כל ההגדרות שהולכות להיות משותפות עבור כל הטפסים. לדוגמה, כאן הגדרתי Center Screen.

  10. 02:30

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

  11. 02:52

    בואו ניקח את הגופן הזה. אנחנו לא רוצים שיהיה כתוב פורום אחד על כל הטפסים שלנו. נוריד פה את הפורום אחד. בואו נוריד את ה-Maximize Box ונגדיר פורום בורדר סטייל כ-Fixed ואז בצורה כזאת היוזר לא יוכל לשנות את גודלם.

  12. 03:22

    מה שאני מגדיר כרגע זה הדיפולט וכמובן שניתן יהיה אחר כך לדרוס את זה. מה עוד אנחנו רוצים? זהו כרגע. אוקיי, אחרי שהגדרנו את הטופס הבסיס, אם אני עכשיו אריץ את התוכנית אז בעצם זה הטופס שיעלה ואין בו כלום.

  13. 03:42

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

  14. 03:57

    אז בואו נצרף כאן איזושהי תמונה, נגדיר אותה בצורה כזאת, נשים את המיקום שלה ל-location 00 ובואו נאתר איזה תמונה במחשב בכדי להציג כלוגו של החברה.

  15. 04:24

    אז בואו נגדיר ב-image local resource import in a logo שהכנתי ונגדיר רק שהתמונה הזאת size mode שלה, בואו ניקח האוטוסאדס.

  16. 04:57

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

  17. 05:16

    בואו ניכנס לאירועים, אירוע קליק, פרוסס סטארט, ובואו נביא את המשתמש לאתר החברה. אז ברגע שהמשתמש לוחץ על התמונה, קליק על התמונה, הוא יגיע ל-http://www.praktiq.com.

  18. 05:53

    נניח שזה אתר החברה שלנו. שימו לב רק שאני כן הייתי רוצה לשנות את השם ל-pick-לוגו, כך שזה יהיה תקף לכל הטפסים שהולכים לרשת את הטופס הזה.

  19. 06:11

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

  20. 06:53

    רוצים להציג את הטופס הזה הטופס הזה התפקיד שלו זה רק להוות בסיס לטפסים אחרים בכדי שנוכל לקחת מיידית כל מיני מאפיינים שהגדרנו בלי הצורך לחזור עליהם ובנוסף אם אנחנו נרצה בעתיד לשנות איזשהו מאפיין נוכל במהירות לשנות אותו בבסיס והוא יתפוס מיידית בכל הטפסים האחרים אז איך אנחנו עושים את זה אז בואו

  21. 07:20

    נסגור פה את הכל ונבחר או נוסיף עוד טופס מכה שמעניין לפרויקט add windows form כאן אנחנו יכולים לבחור מצד שמאל בווינדוס פורמס ואנחנו רוצים לבחור באינהריטד פורם. בואו נקרא לטופס הזה מיין פורם כי זה הטופס הראשי שאנחנו הולכים להתעסק איתו בתוכנית והוא רץ ראשון כשהתוכנית עולה.

  22. 07:55

    עכשיו ברגע שאמרתי שאני רוצה להוסיף אינהריטד פורם כלומר טופס שיורש אז ויז'ול סטודיו אומרת לי תראה זה כל הטפסים שיש לך בתוכנית ממי אתה רוצה לרשת.

  23. 08:07

    רוצים לרשת מהבייס פורם נבצע אוקיי ואוטומטית אנחנו יכולים לראות שמיידית ה-inherited form קיבל בול את אותם המאפיינים של הבייס פורם בלי שנצטרך לכתוב דבר אנחנו עכשיו יכולים לגשת ולשנות את הגודל בדיוק כמו שאנחנו רוצים עכשיו בואו תסתכלו האם אני יכול גם לגעת ברכיבים שהיו בבייס פורם

  24. 08:40

    קודם כל שימו לב שאני רואה את הרכיב, אני נמצא במיינפורם ואני רואה את הלוגו ואני רואה איזשהו אייקון קטנצ'יק כזה והאייקון הקטנצ'יק שמוצמד לרכיב הוויזואלי מציין שהרכיב הזה הגיע מטופס בסיס.

  25. 08:54

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

  26. 09:20

    כל רכיב שנמצא על טופס זה בייסיקלי דאטה ממבר לדאטה ממבר יש הרשאת גישה והעניין פה הוא זהה לחלוטין לכל דבר אחר באובג'קט אוריינטד אם אני נמצא בדאטה ממבר ויש לי הרשאת גישה שהיא פרייבט כמו שאני רואה כאן אז כמובן שאני לא יכול לגעת ברכיב ממחלקות יורשות אם אני הייתי עכשיו הולך ומשנה את זה ל-protected,

  27. 09:47

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

  28. 10:06

    ספציפית לגבי לוגו, לא בטוח שהייתי רוצה לאפשר לרכיבים היורשים לשלוט על המיקום שלו, אבל יכול להיות שהיו רכיבים אחרים שהייתי אומר אני כן מאשר לשלוט על המיקום אז בואו נחזיר את זה לפרייבט כי זה היה יותר נכון מבחינתנו עבור הלוגו נפגור את הבייספורם נבצע ריבילד ונמשיך לפתח את

  29. 10:32

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

  30. 11:08

    ומה שאנחנו רוצים לעשות במיין פורום אנחנו רוצים שיהיה לנו איזשהו לחצן שמציג טופס נוסף ובוא נניח שהטופס הנוסף שאנחנו רוצים להציג זה טופס עבור איזשהו דוח נרשום על הלחצן הזה show report הנה הלחצן אנחנו יכולים to show report סבבה יש לנו פה לחצן הכל בסדר שימו לב לגופן הגדול שהגיע מטופס הבסיס עכשיו כשאני לוחץ על הלחצן הזה אני רוצה שיפתח לי טופס נוסף אז אני צריך

  31. 11:55

    להוסיף טופס נוסף בואו נחזור ל-solution explorer מקש ימני add ונבחר windows פורם, נבחר פה windows forms, inherited form ובואו ניצור לעצמנו report form.

  32. 12:17

    איזשהו דוח שאנחנו רוצים לראות, עוד פעם אנחנו נירש מהbase form כי זה טופס הבסיס של כל הטפסים שלנו, אני לא רוצה לרשת מהmain form כי אני לא יוצר טופס שהוא גם main, אני יוצר טופס שהוא אחד מהטפסים של התוכנית שלי ולכן אני רוצה את כל המאפיינים של הbase form שיהיו בו.

  33. 12:39

    אז בואו נצרף את הטופס שימו לב שאוטומטית הוא נראה בצורה כזאת ומה שאני רוצה זה שיהיה לי פה איזה שהיא לייבל ובואו נציג עליה סאם ריפורט lbl ריפורט ובואו נניח שיש לי כאן איזה שהיה listbox ומה שאנחנו רואים זה lst port נלך לאיטמס וניקח פה כמה פריטים של הריפורט אחלה עכשיו יוזר הולך לראות את הטופס הזה והוא צריך כמובן לבצע סגירה של הטופס

  34. 13:44

    או אפשרות לחזור אחורה או לסגור את הטופס אז בואו ניקח פה איזשהו לחצן ונגדיר שהלחצן הזה יהיה קלוס נקרא לו btn close וכל מה שהלחצן הזה הולך לעשות זה את פעולת ה-close כאן בעצם סיימנו לבנות את טופס ה-report שימו לב רק שאני רואה שהוא אוטומטית יורש משם ה-namespace.baseform ואני יכול להיפטר מהשם של ה-namespace.

  35. 14:26

    בואו נחזור. עכשיו אנחנו רוצים להציג את הטופס הזה. בשביל להציג את הטופס אנחנו רוצים לעשות את זה בלחיצה על הכפתור. אז בואו ניכנס לכפתור show report ומה שאנחנו צריכים לעשות זה לבנות אובייקט מהסוג של הטופס שאנחנו רוצים להציג.

  36. 14:47

    הטופס נקרא report form לכן אני בונה report form frm שווה new report form frm ואני פונה לפונקציה שנקראת show שימו לב שיש פה שתי פונקציות אנחנו הולכים כרגע לדבר על show וממש עוד מעט אנחנו הולכים לדבר על הפונקציה השנייה show dialog אוקיי מה אנחנו עושים אני מריץ קודם כל אני רואה את הבייס פורם אני לא רוצה לראות את הבייס

  37. 15:17

    פורם כשהתוכנית הרצה אז בואו נחזור לפרוגרם במיין נגדיר שאנחנו רוצים לראות אובייקט מהמיין פורם, נריץ שוב את התוכנית, דבר ראשון המיין פורם עולה, שימו לב שכולם עולים במרכז המסך כי הגדרנו את זה בבייס, לחיצה על show report ואנחנו רואים את תופס הדוח שמציג את הריפורט והיוזר עכשיו יכול לעיין בדוח עצמו.

  38. 15:50

    למה הצגתי את התופס הזה על ידי show ויותר חשוב מה זה אומר שהתופס נצג על ידי show? אז למעשה מה שזה אומר זה הצגה לא מודלית. הצגה לא מודלית אומרת שני דברים. דבר ראשון אנחנו יכולים לחזור בחזרה ולתת שליטה או פוקוס לטופס הקודם לפרנט.

  39. 16:16

    הפרנט מבחינתנו זה היה המיין פורם ולעבור ביניהם והדוגמה הזאת היא בדיוק מתאימה למצב שבו אני מציג למשתמש דוח ואני רוצה שהמשתמש יכול להוריד את הדוח למטה להמשיך לעבוד עם הטופס הראשי להסתכל שוב פעם על הדוח אין ממש קשר בין הטופס הראשי לבין הדוח שהוא יכול פשוט להסתכל עליו ולשים אותו

  40. 16:40

    בצד ולכן הוא יכול להמשיך ולעבוד עם הטופס הראשי עם הפרם אז הדבר אחד זה שישנה שליטה מבחינת המשתמש בזה שהוא יכול לחזור ולעבוד עם הטופס הראשי דרך אגב, כל לחיצה על הלחצן פותחת לנו איזשהו טופס כזה.

  41. 17:00

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

  42. 17:22

    זאת אומרת פונקציית show היא non-blocking operation והדבר הזה הוא מאוד חשוב מבחינתנו. אם אני עכשיו ארשום פה לדוגמה message box test, אני אריץ, אני אלחץ על הלחצן, האם אני אראה מיידית את הטקסט?

  43. 17:43

    כלומר האם אני גם אראה את הטופס וגם את המסג'בוקס? תשובה בהחלט. בואו נלחץ עליו ונראה את הטופס ואת המסג'בוקס.

  44. 17:52

    זאת אומרת שאנחנו לומדים מזה שהזרימה של התוכנית לא נתקעת בפונקציה show. זה אומר שאם אנחנו רוצים שהתופס child הזה יקלוט מידע מהמשתמש ויביא לנו ונשתמש עם המידע הזה ממש כאן אנחנו לא נוכל לעשות את זה כי התופס עצמו כבר הוצג.

  45. 18:19

    אנחנו נוכל לעשות את זה אולי בדרך אחרת עקיפה אבל זה לא המשמעות ולא המטרה של טופס לא מודאלי. הטופס הזה זה non-modal form יותר נכון נגדיר את זה ב-show כי show היא זאת שגורמת לטופס להיות non-modal form.

  46. 18:42

    אוקיי אז זה בעצם שיטה אחת להציג טופס צורה לא מודאלית וזה מתבצע על ידי הפונקציה show אבל ראינו שישנה עוד פונקציה שנקראת show dialogue והשאלה זה מה זאת הפונקציה הזאת אז בואו ניקח דוגמה נוספת שבה אני רוצה לערב טופס חיצוני ובוא נניח שמה שאני רוצה לעשות זה לקלוט מהמשתמש את האימייל שלו אני רוצה טופס שיוכל לקלוט אימייל מהמשתמש ואני

  47. 19:19

    רוצה לקחת את האימייל ולהציג אותו כאן איפשהו אז דבר ראשון אני רוצה שיהיה לי איזשהו טופס שיאפשר לקחת אימייל אז אני עושה את אותו הסיפור אני מוסיף Windows פורם אני בוחר פה Windows פורמס הולך ל-inherited פורם וקורא לטופס הזה get email form יורש מהבייס ועכשיו אני הולך לעצב את הטופס בצורה כזאת שהוא הולך לקבל מהמשתמש את האימייל שלו lbl-email

  48. 20:18

    Enter your email. ניקח פה תיבת טקסט, נקרא לתיבת טקסט הזאת txt-email. ועכשיו, מה אנחנו רוצים שהמשתמש יעשה כשהוא יכניס אימייל?

  49. 20:38

    אנחנו רוצים שהוא יוכל ללחוץ על לחצן אוקיי, או אם הוא מתחרט, לחצן cancel. בואו ניקח שני לחצנים. הלחצן הזה יהיה btn-cancel, והלחצן השני, בעצם בואו נעתיק ונדביק שנשמור את הגדלים, הלחצן השני יהיה btn-ok ונרשום עליו אוקיי ואז יש לנו פה אוקיי וקנסל משתמש יכול להתחרט

  50. 21:28

    וללחוץ על קנסל או אישור עכשיו יכול להיות שהמשתמש רושם בתוך תיבת הטקסט ולוחץ אנטר אם הוא לוחץ אנטר יכול להיות שאנחנו נרצה אוטומטית להפעיל את לחצן האוקיי הרבה פעמים זה קורה אם היוזר לוחץ על אסקייפ כשהטופס הזה מוצג ואולי אנחנו רוצים להפעיל אוטומטית את לחצן ה-cancel לכן בטופס עצמו קיימים שני מאפיינים שמיוחדים

  51. 21:57

    במיוחד בשביל זה אקספט בטון, שימו לב שאני נמצא על הטופס ולא על הלחצן אקספט בטון זה תכונה של הטופס שאומרת איזה לחצן אתם רוצים שאני אפעיל אם אתם לוחצים על enter אנחנו רוצים להפעיל את btn, אוקיי?

  52. 22:15

    ושימו לב שהוא נהיה ה-default button הוא כזה קיבל מסגרת כחולה מסביבו טופס אומר לנו גם איזה לחצן אתם רוצים שאני אפעיל כאשר היוזר לוחץ על אסקייפ ספציפית התו אסקייפ וספציפית התו אנטר אסקייפ זה יהיה קאנסל בטון אנחנו בוחרים ב btn cancel ועכשיו היוזר גם אם הוא לוחץ אנטר מתבצע לחצן האוקיי ואם הוא לוחץ קאנסל מתבצע לחצן הקאנסל ומה שאנחנו

  53. 22:45

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

  54. 23:05

    אז איך אנחנו מבצעים עכשיו אינטראקציה של שליחה וקבלת מידע בין טופס ה-Parent לבין טופס ה-Child? בואו נחזור לטופס ה-Parent ונציב עליו, את זה אנחנו כבר לא צריכים, נציב עליו איזשהו לחצן לקבלת האימייל.

  55. 23:31

    בואו נעתיק את הלחצן הזה, נשים אותו פה, ומבחינתנו זה יהיה getEmail, נקרא את הלחצן הזה btn getEmail, ובלחיצה על הלחצן הזה אנחנו רוצים להציג את הטופס השני.

  56. 23:56

    אז אם אנחנו רוצים להציג את הטופס השני, מן הראוי שניצור אובייקט מהטופס השני. הטופס השני נקרא getEmailForm,

לקורס המלא: קורס WinForms אונליין

ההרצאה הקודמת: בניית פקד חדש - User Control

ההרצאה הבאה: ממשק מרובה מסמכים - MDI

הרצאות קשורות מקורסים אחרים

  • Multiple Pages - שימוש במספר דפים
  • Multiple Contracts
  • Forms - Event Object
  • טופס בריאקט - React Forms

קורסים נוספים במסלול

  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס תכנות מתקדם - #Advanced .NET C
  • קורס WCF - תקשורת למתקדמים בדוט-נט