使用Winforms(.Net)的分层数据
我有3个下拉列表和下面的数据格式使用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
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