GUI בC# - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

GUI בC#


נעמה.

Recommended Posts

1. הפונקציה Show פותחת טופס

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.show.aspx

והפונקציה Close סוגרת

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.close.aspx

2. טופס (Form) הוא אובייקט לכל דבר. אין בעיה להגדיר לו פונקציות ואיברים נוספים.

קישור לתוכן
שתף באתרים אחרים

בניתי חלון, בו אני מקבלת מהמשתמש פרמטרים של : שם, גיל, מקום מגורים, מקצוע- ואני רוצה לשמור אותם ברשימה של אובייקטים מסוג student.

איפה אני מצהירה על הרשימה (כדי שכל המחלקות והחלונות של התכנית יכירו אותה ויוכלו להשתמש בה)?

קישור לתוכן
שתף באתרים אחרים

לרוב מומלץ לעשות הפרדה בין ה-GUI והלוגיקה.

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

קישור לתוכן
שתף באתרים אחרים

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

עכשיו:

יש לי את התכנית שמריצה את החלון - שבו בלחיצה על כפתור add נפתח לי חלון חדש עם textbox למילוי השדות, וכפתור לאישור.

בלחיצה על כפתור האישור אני רוצה לקרוא לפונקציה add עם הנתונים שהמשתמש הכניס - אבל הclass לא מכיר את הפונקציה add של המחלקה האחרת ???

קישור לתוכן
שתף באתרים אחרים

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

בלחיצה על כפתור האישור אני רוצה לקרוא לפונקציה add עם הנתונים שהמשתמש הכניס - אבל הclass לא מכיר את הפונקציה add של המחלקה האחרת ???

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

קישור לתוכן
שתף באתרים אחרים

תודה, הצלחתי.

<ואיך אני הורסת את החלון של מילוי פרטים?>

ועוד שתי שאלות:

1. מהי הפקודה שכפתור יהיה 'כבוי'?

2. איך אפשר להדפיס למשתמש הודעות שגיאה ממנגנון try- catch (כלומר, איך מתוך הקובץ אני קוראת לmessageBox)?

קישור לתוכן
שתף באתרים אחרים

1. את מתכוונת שאי אפשר יהיה ללחוץ עליו?

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.enabled(VS.80).aspx

2. באמצעות MessageBox.Show

http://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox.show(VS.80).aspx

שימי לב שכדאי לפתוח את ה-message box רק מתוך ה-GUI. כלומר, אם קופצת לך שגיאה ברמת הלוגיקה, אז מומלץ לא לטפל בה (או לתפוס אותה ולזרוק שגיאה אחרת במקומה) ולתת ל-GUI שקרא לה לטפל בשגיאה.

קישור לתוכן
שתף באתרים אחרים

עוד שאלות:

א. איך עושים שכפתורי radio יהיו בקבוצה- כך שיהיה אפשר לבחור כל פעם באחד מהם?

ב. יש אפשרות שיפתח חלון עם הקבצים שעל המחשב (כמו שנפתח שבוחרים "פתיחה" בword) שהמשתמש יוכל לבחור אחד?

איך אפשר לתפוס שגיאה ברמת הלוגיקה כדי להעבירה לGUI?

קישור לתוכן
שתף באתרים אחרים

א. התיעוד ב-MSDN הוא ממש מוצלח. אם מדובר בפיצ'ר שימושי במיוחד (כמו איגוד כמה radio buttons) אז רוב הסיכוי שתהיה דוגמה אפילו בדף הראשי של האובייקט המדובר:

http://msdn.microsoft.com/en-us/library/system.windows.forms.radiobutton.aspx

ב. OpenFileDialog

http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog.aspx

ג. ה-GUI הוא פשוט עוד רמה של קוד. אם ה-GUI קורא לפונקציה שנמצאת בלוגיקה, והפונקציה הזו זורקת שגיאה, אז זה התפקיד של ה-GUI לתפוס אותה (באמצעות try/catch). אם יכולה להיות לך שגיאה איפשה בפונקציה שברמת הלוגיקה, אז את יכולה לעשות שלושה דברים:

1. לתפוס את השגיאה ברמת הלוגיקה (באמצעות try/catch) ולהדחיק אותה (כלומר לטפל בה אבל לא להעביר אותה הלאה).

2. לתפוס את השגיאה ברמת הלוגיקה, ולזרוק אותה מחדש, או לזרוק שגיאה אחרת במקומה, באמצעות throw (על מנת שה-GUI יתפוס אותה).

3. לא לתפוס את השגיאה בכלל, ולתת ל-GUI לטפל בה.

האופציה שאת בוחרת כמובן תלויה בסוג השגיאה וב-design של המערכת שלך.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...