עבור לתוכן

GUI בC#

Featured Replies

פורסם

1. איך עושים שבלחיצה על כפתור יפתח לי חלון חדש? (ויש אפשרות שהשני יסגר?)

2. האם אפשר להכניס נתונים מכמה חלונות שונים לתוך textbox ולהשוות ביניהם? איפה רושמים את ההשוואה בקוד?

פורסם
  • מחבר

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

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

פורסם

את יכולה להגדיר אותה כ datamember סטטי,

או שאת יכולה להשתמש באותו חלון כל פעם, ולשמור את הרשימה בחלון עצמו

פורסם

לרוב מומלץ לעשות הפרדה בין ה-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 של המערכת שלך.

פורסם
  • מחבר

ב. לא מצליחה את הOpenFileDialog (אם אני גוררת את הסמל מהtool box לאן שאני רוצה - איפה רושמים את הקוד - לפתוח ולבחור קובץ ?)

פורסם
  • מחבר

כי אני לא מבינה היכן הקוד בדגומא נכנס בתכנית ???

ארכיון

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

דיונים חדשים