פורסם 2013 ביולי 1512 שנים בניתי ספר כתובות עם c#.הוא בנוי בצורה שיש labels מעל listboxes ובתוך ה listbox יש את השם, הכתובת, מס' טלפון וכו' (לכל אחד יש listbox נפרד). למעלה יש כפתור "Add Person" שמה שהוא עושה זה לפתוח form חדש עם textboxes שבהם מכניסים את הפרטים. את כל הפרטים הוא שומר בקובץ xml.ועכשיו לשאלה:איך אני עושה שאחרי שב form השני לוחצים "add" כדי להוסיף איש לספר כתובות זה יוסיף אותו ואת הפרטים ב listboxes ב form הראשי? נערך 2013 ביולי 1512 שנים על-ידי ofersto
פורסם 2013 ביולי 1512 שנים תערוך בבקשה את הכותרת כך שתכיל את תמצית השאלה (כותרת לדוגמה: "העברת מידע בין טפסים ב-#C").Form הוא מחלקה לכל דבר. אתה יכול להוסיף לו שדות ופונקציות כמו כל מחלקה אחרת, ולהגדיר אותם כ-public וככה לאפשר גישה אליהם ממחלקות אחרות.אתה פשוט צריך להגדיר בטופס השני מתודה (או property, או כמה מתודות, מה שנוח לך) שתחזיר את הפרטים שהמשתמש הכניס, או להיפך - להגדיר בטופס הראשון מתודה שאומרת לו להוסיף את פרטי משתמש כלשהו לרשימה, ואז הטופס השני יקרא למתודה הזו. נערך 2013 ביולי 1512 שנים על-ידי שניצל
פורסם 2013 ביולי 1512 שנים מחבר תערוך בבקשה את הכותרת כך שתכיל את תמצית השאלה (כותרת לדוגמה: "העברת מידע בין טפסים ב-#C").Form הוא מחלקה לכל דבר. אתה יכול להוסיף לו שדות ופונקציות כמו כל מחלקה אחרת, ולהגדיר אותם כ-public וככה לאפשר גישה אליהם ממחלקות אחרות.אתה פשוט צריך להגדיר בטופס השני מתודה (או property, או כמה מתודות, מה שנוח לך) שתחזיר את הפרטים שהמשתמש הכניס, או להיפך - להגדיר בטופס הראשון מתודה שאומרת לו להוסיף את פרטי משתמש כלשהו לרשימה, ואז הטופס השני יקרא למתודה הזו.לא הבנתי. אני די מתחיל ב C#.לעשות באחד ה Forms:public void addPerson(){listbox1.Items.Add(textbox1.Text);}? נערך 2013 ביולי 1512 שנים על-ידי ofersto
פורסם 2013 ביולי 1512 שנים ה-listbox שאתה רוצה להוסיף אליו את הנתון נמצא בטופס הראשון, וה-textbox שממנו אתה רוצה לקחת את הנתון נמצא בטופס השני. אז קוד כזה לא יכול לעבוד.אתה צריך שהמתודה addPerson תקבל את הנתון מבחוץ (כפרמטר למתודה) ואז תוסיף אותו ל-listbox.מצד שני אתה צריך שהטופס השני יקרא ל-addPerson, ויעביר לו את ה-textbox1.Text כפרמטר.יש מבין?
פורסם 2013 ביולי 1512 שנים מחבר יש מבין?לאאתה יכול לכתוב קוד מדגים? נערך 2013 ביולי 1512 שנים על-ידי ofersto
פורסם 2013 ביולי 1512 שנים באופן כללי מאוד, בטופס הראשון צריך להיות משהו כזה:public void addPerson(string name) { listbox1.Items.Add(name);}ואז בטופס השני צריך לבצע משהו כזה:form1.addPerson(textbox1.Text);שים לב שמה שקראתי לו form1 הוא שדה של הטופס השני. אתה צריך לדאוג להעביר אותו לטופס השני (לדוגמה, בקונסטרקטור שלו).
פורסם 2013 ביולי 1512 שנים מחבר ניסיתי משהו כזה ב Form1:public void addPerson(string name, string address, string telephone, string email, string cellphone) { listBox1.Items.Add(name); listBox2.Items.Add(address); listBox3.Items.Add(telephone); listBox4.Items.Add(email); listBox5.Items.Add(cellphone); }ואת זה ב Form2: Form1 f = new Form1(); f.addPerson(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text);וזה לא עובד
פורסם 2013 ביולי 1512 שנים כמעט.ה-f שהגדרת פה הוא לא הטופס הראשון, אלא הוא אובייקט חדש מאותו טיפוס של הטופס הראשון. אתה צריך לדאוג להעביר את הטופס הראשון בעצמו לטופס השני. כמו שאמרתי, אתה יכול לעשות את זה ע"י כך שתגדיר בקונסטקרטור של Form2 שיקבל פרמטר מטיפוס Form1, ואז כש-Form1 יוצר את ה-Form2 הוא יעבור לו את עצמו (this).
פורסם 2013 ביולי 1512 שנים מחבר כמעט.ה-f שהגדרת פה הוא לא הטופס הראשון, אלא הוא אובייקט חדש מאותו טיפוס של הטופס הראשון. אתה צריך לדאוג להעביר את הטופס הראשון בעצמו לטופס השני. כמו שאמרתי, אתה יכול לעשות את זה ע"י כך שתגדיר בקונסטקרטור של Form2 שיקבל פרמטר מטיפוס Form1, ואז כש-Form1 יוצר את ה-Form2 הוא יעבור לו את עצמו (this).לא הבנתי... מה זה קונסטקרטור?
פורסם 2013 ביולי 1512 שנים על יצירת מחלקות כבר למדת? בעיקרון קונסטרקטור (או בעברית- בנאי) נועד כדי שיבצע פעולות בעת יצירת מופע מחלקה (אובייקט). הנה קישור להסבר. נערך 2013 ביולי 1512 שנים על-ידי eido300
פורסם 2013 ביולי 1512 שנים אגב, אופציה קצת יותר יפה (בעיניי) היא האופציה הראשונה שהצעתי.לשמור ב-Form2 שדה (או מספר שדות) פומבי שיחזיקו את הפרטים שהמשתמש הכניס, ואז לשלוף את הפרטים האלה בקוד של Form1 - בדומה ל-OpenFileDialog ששומר את שם הקובץ הנבחר בשדה בשם FileName.
פורסם 2013 ביולי 1512 שנים מחבר אגב, אופציה קצת יותר יפה (בעיניי) היא האופציה הראשונה שהצעתי.לשמור ב-Form2 שדה (או מספר שדות) פומבי שיחזיקו את הפרטים שהמשתמש הכניס, ואז לשלוף את הפרטים האלה בקוד של Form1 - בדומה ל-OpenFileDialog ששומר את שם הקובץ הנבחר בשדה בשם FileName.לא מובן בעליל
פורסם 2013 ביולי 1512 שנים אז לא משנה. נראה לי שאתה צריך להמשיך ללמוד עוד קצת על #C ועל תכנות מונחה עצמים.
פורסם 2013 ביולי 2612 שנים היי שניצל,אני חושב שצורת העבודה הזאת היא לא נכונה ומשרישה דברים לא טובים, הכוונה היא גם לאופציה א' וגם לאופציה ב'. הרי ברור שאם טופס 2 נפתח מטופס 1 אסור לו להכיר אותו (cyclic) רצוי במקרה הזה לזרוק אירוע.כמובן שהבחור פה כנראה עוד לא מכיר אירועים אבל זה בדיוק הזמן ללמוד את זה כאשר יש כזה צורך.בכל מקרה כל הכבוד לך על התמיכה הקבועה באנשי הפורום.
פורסם 2013 ביולי 2612 שנים בשיטת העבודה הראשונה שהצעתי אין שום תלות מעגלית, ואין אירועים. מה שאני מציע הוא לעבוד כמו איך שעובדים עם OpenFileDialog. השיטה הזו היא טובה למקרה שהטופס השני הוא תיבת דו-שיח (דהיינו חלון זמני שנפתח כדי לערוך או להכניס פרטים מסויימים, ורק כשסוגרים אותו הטופס הראשון מתעדכן). בשיטה השנייה אתה צודק, עדיף לעשות את זה עם אירועים. זה יותר מתאים למקרה שרוצים ששני הטפסים יהיו פעילים במקביל. נערך 2013 ביולי 2612 שנים על-ידי שניצל
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.