נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: treeview

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
יוני
אורח
אורח


הצטרף / הצטרפה: 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 רשוּם
ציטוט shoshan

הממ...אתה יודע מה זה מילון ?

באופן עקרוני הפתרון הכי נאיבי יהיה להוסיף את כל ההורים, ואז עבור כל ילד לחפש את ההורה
שלו מבין ה-Nodes ולהוסיף את ה-child ל-nodes שלו...

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


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
יוני
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 18 September 2007 בשעה 19:02 | IP רשוּם
ציטוט יוני

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

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 18 September 2007 בשעה 19:25 | IP רשוּם
ציטוט shoshan

טוב, עכשיו שמתי לש שיש אפשרות מובנה של מפתחות ומילון על מחרוזות, אבל שיהיה, כבר כתבתי את זה...

קוד:
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;
        }
    }
}



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
יוני
אורח
אורח


הצטרף / הצטרפה: 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 רשוּם
ציטוט shoshan

הקוד שלי נועד רק להסביר לך איך לעבוד עם מילון ואיך לעבוד עם treeview, את זה הבנת ?

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
לוק
אורח
אורח


הצטרף / הצטרפה: 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 רשוּם
ציטוט shoshan

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

אבל כמו שאני הבנתי את זה זה תרגיל של בבי"ס והמבנה נתונים הוא האילוץ,

[ טעיתי ? ]

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 

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

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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