כותב |
|
יוני אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 18 September 2007 בשעה 18:26 | | IP רשוּם
|
|
|
|
שלום לכל חברי הפורום רציתי להגיד שיש כאן אחלה פורום והרבה נושאים מעניינים.... לכן החלטתי לשאול כאן שאלה שמטרידה אותי או כן אני כותב ב c#
אני מניח שאתם יודעים מה זה treeview אז אני צריך לבנות כזו רשימה
יש לי שתי רשימות : אחת הורים ואחת בנים : List<parent>Parents = new List <parent>() List<child>Children = new List <child>() להורה יש התכונות : שם וגיל לילד את התכונות : שם הורה שם ילד
השאלה היא איך אני בונה treeview שהרמה הראשונה תהיה כל ההורים ובעת לחיצה על הורה יוצגו כל ילדיו
תודה רבה לכל העונים מראש אני בטוח שזה לא כל כך קשה אבל אני פשוט צריך את זה ולא מצליח בעצמי
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 18 September 2007 בשעה 18:52 | | IP רשוּם
|
|
|
|
הממ...אתה יודע מה זה מילון ?
באופן עקרוני הפתרון הכי נאיבי יהיה להוסיף את כל ההורים, ואז עבור כל ילד לחפש את ההורה שלו מבין ה-Nodes ולהוסיף את ה-child ל-nodes שלו...
אפשר לשמור במילון את האינדקס של כל ההורים בזמן ההודפה וזה יוריד את הסיבוכיות של החיפוש...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
יוני אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 18 September 2007 בשעה 19:02 | | IP רשוּם
|
|
|
|
לא אני לא יודע מה זה מילון, תואיל בטובך להראות לי איך לישם את זה?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 18 September 2007 בשעה 19:25 | | IP רשוּם
|
|
|
|
טוב, עכשיו שמתי לש שיש אפשרות מובנה של מפתחות ומילון על מחרוזות, אבל שיהיה, כבר כתבתי את זה...
קוד:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { List<Parent> parents = new List<Parent>(); parents.Add(new Parent { Age = 30, Name = "parent1" }); parents.Add(new Parent { Age = 31, Name = "parent10" }); parents.Add(new Parent { Age = 32, Name = "parent100" }); parents.Add(new Parent { Age = 33, Name = "parent1000" }); List<Child> children = new List<Child>(); children.Add(new Child { Parent = "parent1", Name = "nudnik 1.1" }); children.Add(new Child { Parent = "parent1", Name = "nudnik 1.10" }); children.Add(new Child { Parent = "parent1", Name = "nudnik 1.100" }); children.Add(new Child { Parent = "parent10", Name = "nudnik 10.1" }); children.Add(new Child { Parent = "parent10", Name = "nudnik 10.10" }); children.Add(new Child { Parent = "parent10", Name = "nudnik 10.100" }); children.Add(new Child { Parent = "parent10", Name = "nudnik 10.1000" });
Dictionary<string, int> parentsIndex = new Dictionary<string, int>();
for ( int i = 0 ; i < parents.Count ; i++ ) { parentsIndex.Add(parents[i].Name, i); treeView1.Nodes.Add(parents[i].ToString()); }
foreach ( Child c in children ) treeView1.Nodes[parentsIndex[c.Parent]].Nodes.Add(c.ToString()); } }
class Parent { public string Name; public int Age; public override string ToString() { return String.Format("{0} ({1})", Name, Age); } }
class Child { public string Parent, Name; public override string ToString() { return Name; } } }
|
|
|
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
יוני אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 18 September 2007 בשעה 20:45 | | IP רשוּם
|
|
|
|
תודה רבה שושן אבל יש בעיה קטנה
אצלי בתכנית ההורה והילד מוגדרים כל אחד ב class משלו ויצירת הרשימות והכנסת ערכים עליהם נמצא בתכנית הראשית - Program.cs שזה גם כן class נפרד
ולכן כשאני משתמש בקוד שרשמת הוא לא מזהה את הילד וההורה (השתמשתי בקוד שלך חוץ מהקטע של הגדרת הרשימות והכנסת הערכים)
כיצד לפתור זאת?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 18 September 2007 בשעה 20:47 | | IP רשוּם
|
|
|
|
הקוד שלי נועד רק להסביר לך איך לעבוד עם מילון ואיך לעבוד עם treeview, את זה הבנת ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
לוק אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 19 September 2007 בשעה 02:37 | | IP רשוּם
|
|
|
|
הפתרון של שושן הוא טוב אבל אני לא מציע להשתמש בשם כמפתח או בחיפוש כיוון ששמות אינם מפתחות חד ערכיים ויכולים להניב תוצאות שגויות.
אני לא מתכוון לממש קוד אלא רק להציע רעיון. כל אבא יכיר את הבנים שלו וכך במקום לחפש בכל ה-collection של הבנים, תוכל לגשת ישירות לכל בן דרך collection האב. כלומר במחלקת האבות נחזיק collection מצביעים לבנים, ובכל פעם שיוצרים בן דואגים לעדכן את ה-collection של האב שלו.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 19 September 2007 בשעה 02:56 | | IP רשוּם
|
|
|
|
באופן עקרוני אתה צודק והרעיון שלך למבנה נתונים הוא בהחלט הגיוני,
אבל כמו שאני הבנתי את זה זה תרגיל של בבי"ס והמבנה נתונים הוא האילוץ,
[ טעיתי ? ]
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|