使用Winforms(.Net)的分层数据

使用Winforms(.Net)的分层数据,winforms,hierarchical,Winforms,Hierarchical,我有3个下拉列表和下面的数据格式 Dropdown-1 Dropdown-2 Dropdown-3 ----------- -------------- --------------- Parent-1 Boy-1 Girl-1 Parent-2 Boy-2 Girl-2 Parent-3 Boy-3 Girl-3

我有3个下拉列表和下面的数据格式

 Dropdown-1    Dropdown-2      Dropdown-3
-----------    --------------      ---------------
Parent-1          Boy-1                 Girl-1
Parent-2          Boy-2                 Girl-2
Parent-3          Boy-3                 Girl-3
基于下拉框中的选择

如果我选择 下拉列表-1中的父级-2 男孩-1从下拉列表-2 下拉列表-3中的女孩-2

然后我需要以下层次结构格式的结果:

 Parent 1
  Boy 1
       Name 1:
       Age 1: 
  Girl 1
       Name 1:
       Age 1: 
  Girl 2
       Name 2:
       Age 2: 
 Parent 2
   Boy 1
          Name 1:
          Age 1: 
   Girl 1
          Name 1:
          Age 1: 
   Girl 2
          Name 2:
           Age 2:
这需要你的支持

提前感谢,


我尝试使用TreeView类创建父对象和子对象。当我尝试创建grantchild时。它在下面标记的区域抛出错误。有什么建议可以解决吗

//=============================================================

              // Add a child treenode for each NameAge object in the current Gender object.
                foreach (NameAge noOfNameAge in noOfParents.ParentOrder)
                {
                    controllerOutput.Nodes[parentArray.IndexOf(noOfParents)].Nodes[genderArray.IndexOf(noOfGender)].Nodes.Add(
                        new TreeNode(noOfNameAge.NameAgeID));
                }
    // Start of parent class.
    public class Parent : System.Object
    {
        private string parentName = "";
        protected ArrayList parentOrder = new ArrayList();

        public Floor(string parentName)
        {
            this.floorName = parentName;
        }

        public string ParentName
        {
            get { return this.parentName; }
            set { this.parentName = value; }
        }

        public ArrayList ParentOrder
        {
            get { return this.parentOrder; }
        }

    } // End of parent class.



    // Start of gender (Boy/Girl) class.
    public class Corridor : System.Object
    {
        private string genderID = "";
        protected ArrayList genderOrder = new ArrayList();

        public Gender(string genderid)
        {
            this.genderID = genderid;
        }

        public string GenderID
        {
            get { return this.genderID; }
            set { this.genderID = value; }
        }

        public ArrayList GenderOrder
        {
            get { return this.genderOrder; }
        }

    } // End of gender class.



    // Start of NameAge class.
    public class NameAge : System.Object
    {
        private string nameageID = "";
        protected ArrayList nameageOrder = new ArrayList();

        public NameAge(string nameageid)
        {
            this.nameageID = nameageid;
        }

        public string NameAgeID
        {
            get { return this.NameAgeID; }
            set { this.NameAgeID = value; }
        }

        public ArrayList NameAgeOrder
        {
            get { return this.nameageOrder; }
        }

    } // End of NameAge class.



    private ArrayList parentArray = new ArrayList();
    private ArrayList genderArray = new ArrayList();
    private ArrayList nameageArray = new ArrayList();

    private void FillControllerTreeView()
    {

        // Add parent to the ArrayList of Parent objects.
        for (int x = 1; x <= Convert.ToInt32(DropDown-1.SelectedItem.ToString()); x++)
        {
            parentArray.Add(new Parent("Parent - " + x.ToString()));
        }


        // Add Gender(Boy/Girl) to each Parent object in the ArrayList.
        foreach (Parent parent in parentArray)
        {
            for (int y = 1; y <= Convert.ToInt32(DropDown-2.SelectedItem.ToString()); y++)
            {
                parent.ParentOrder.Add(new Gender("Boy - " + y.ToString()));  
            }

            for (int z = 1; z <= Convert.ToInt32(DropDown-3.SelectedItem.ToString()); z++)
            {
                parent.ParentOrder.Add(new Gender("Girl - " + z.ToString()));
            }
        }


        foreach (NameAge nameage in nameageArray)
        {
            for (int y = 0; y <= 2; y++)
            {
                nameage.NameAgeOrder.Add(new NameAge("Light - " + y.ToString()));
            }

            nameage.NameAgeOrder.Add(new NameAge("AC - "));

        }


        controllerOutput.BeginUpdate();
        controllerOutput.Nodes.Clear();

        foreach (Parent noOfParents in parentArray)
        {
            controllerOutput.Nodes.Add(new TreeNode(noOfParents.ParentName));

            // Add a child treenode for each gender object in the current Parent object.
            foreach (Gender noOfGender in noOfParents.ParentOrder)
            {
                controllerOutput.Nodes[parentArray.IndexOf(noOfParents)].Nodes.Add(
                          new TreeNode(noOfGender.GenderID));


                // Add a child treenode for each NameAge object in the current Gender object.
                foreach (NameAge noOfNameAge in noOfParents.ParentOrder)
                {
                    controllerOutput.Nodes[parentArray.IndexOf(noOfParents)].Nodes[genderArray.IndexOf(noOfGender)].Nodes.Add(
                        new TreeNode(noOfNameAge.NameAgeID));
                }

            }
        }

        controllerOutput.EndUpdate();
    }    
//=============================================================

              // Add a child treenode for each NameAge object in the current Gender object.
                foreach (NameAge noOfNameAge in noOfParents.ParentOrder)
                {
                    controllerOutput.Nodes[parentArray.IndexOf(noOfParents)].Nodes[genderArray.IndexOf(noOfGender)].Nodes.Add(
                        new TreeNode(noOfNameAge.NameAgeID));
                }
    // Start of parent class.
    public class Parent : System.Object
    {
        private string parentName = "";
        protected ArrayList parentOrder = new ArrayList();

        public Floor(string parentName)
        {
            this.floorName = parentName;
        }

        public string ParentName
        {
            get { return this.parentName; }
            set { this.parentName = value; }
        }

        public ArrayList ParentOrder
        {
            get { return this.parentOrder; }
        }

    } // End of parent class.



    // Start of gender (Boy/Girl) class.
    public class Corridor : System.Object
    {
        private string genderID = "";
        protected ArrayList genderOrder = new ArrayList();

        public Gender(string genderid)
        {
            this.genderID = genderid;
        }

        public string GenderID
        {
            get { return this.genderID; }
            set { this.genderID = value; }
        }

        public ArrayList GenderOrder
        {
            get { return this.genderOrder; }
        }

    } // End of gender class.



    // Start of NameAge class.
    public class NameAge : System.Object
    {
        private string nameageID = "";
        protected ArrayList nameageOrder = new ArrayList();

        public NameAge(string nameageid)
        {
            this.nameageID = nameageid;
        }

        public string NameAgeID
        {
            get { return this.NameAgeID; }
            set { this.NameAgeID = value; }
        }

        public ArrayList NameAgeOrder
        {
            get { return this.nameageOrder; }
        }

    } // End of NameAge class.



    private ArrayList parentArray = new ArrayList();
    private ArrayList genderArray = new ArrayList();
    private ArrayList nameageArray = new ArrayList();

    private void FillControllerTreeView()
    {

        // Add parent to the ArrayList of Parent objects.
        for (int x = 1; x <= Convert.ToInt32(DropDown-1.SelectedItem.ToString()); x++)
        {
            parentArray.Add(new Parent("Parent - " + x.ToString()));
        }


        // Add Gender(Boy/Girl) to each Parent object in the ArrayList.
        foreach (Parent parent in parentArray)
        {
            for (int y = 1; y <= Convert.ToInt32(DropDown-2.SelectedItem.ToString()); y++)
            {
                parent.ParentOrder.Add(new Gender("Boy - " + y.ToString()));  
            }

            for (int z = 1; z <= Convert.ToInt32(DropDown-3.SelectedItem.ToString()); z++)
            {
                parent.ParentOrder.Add(new Gender("Girl - " + z.ToString()));
            }
        }


        foreach (NameAge nameage in nameageArray)
        {
            for (int y = 0; y <= 2; y++)
            {
                nameage.NameAgeOrder.Add(new NameAge("Light - " + y.ToString()));
            }

            nameage.NameAgeOrder.Add(new NameAge("AC - "));

        }


        controllerOutput.BeginUpdate();
        controllerOutput.Nodes.Clear();

        foreach (Parent noOfParents in parentArray)
        {
            controllerOutput.Nodes.Add(new TreeNode(noOfParents.ParentName));

            // Add a child treenode for each gender object in the current Parent object.
            foreach (Gender noOfGender in noOfParents.ParentOrder)
            {
                controllerOutput.Nodes[parentArray.IndexOf(noOfParents)].Nodes.Add(
                          new TreeNode(noOfGender.GenderID));


                // Add a child treenode for each NameAge object in the current Gender object.
                foreach (NameAge noOfNameAge in noOfParents.ParentOrder)
                {
                    controllerOutput.Nodes[parentArray.IndexOf(noOfParents)].Nodes[genderArray.IndexOf(noOfGender)].Nodes.Add(
                        new TreeNode(noOfNameAge.NameAgeID));
                }

            }
        }

        controllerOutput.EndUpdate();
    }    
//父类的开始。
公共类父类:System.Object
{
私有字符串parentName=“”;
受保护的ArrayList parentOrder=新ArrayList();
公共楼层(字符串parentName)
{
this.floorName=父名称;
}
公共字符串父名称
{
获取{返回this.parentName;}
设置{this.parentName=value;}
}
公共ArrayList父命令
{
获取{返回this.parentOrder;}
}
}//父类的结尾。
//性别(男孩/女孩)课程开始。
公共类道路:System.Object
{
私有字符串genderID=“”;
受保护的ArrayList genderOrder=新ArrayList();
公共性别(字符串genderid)
{
this.genderID=genderID;
}
公共字符串性别ID
{
获取{返回this.genderID;}
设置{this.genderID=value;}
}
公共数组列表性别顺序
{
获取{返回this.genderOrder;}
}
}//性别课结束。
//开始命名类。
公共类名称:System.Object
{
私有字符串nameageID=“”;
受保护的ArrayList NameOrder=new ArrayList();
公共名称(字符串名称ID)
{
this.nameageID=nameageID;
}
公共字符串NameAgeID
{
获取{返回this.NameAgeID;}
设置{this.NameAgeID=value;}
}
公共阵列列表名称顺序
{
获取{返回this.nameageOrder;}
}
}//NameAge类结束。
private ArrayList parentArray=new ArrayList();
private ArrayList genderArray=新ArrayList();
private ArrayList nameageArray=新ArrayList();
私有void FillControllerTreeView()
{
//将父对象添加到父对象的ArrayList。
对于(int x=1;x