I have four lists that I am trying to get the contents to show up in a TreeView
on my Form
.
My current problem is that only the last item in each list is showing up in the view.
I am sure it has something to do with how I am iterating through the list but I am pretty stuck on how to get each individual list item to show up in the tree.
My tree structure is:
Dog
Husky
huskylist
Chiwawa
chiwawlist
Cat
Siamese
siameselist
Tabby
tabbylist
My code for the Form
where the tree view is:
public partial class Form1 : Form
{
private Model m_modelObj;
public Form1(Model modelObj)
{
InitializeComponent();
m_modelObj = modelObj;
List<Tabby> tabbyList = m_modelObj.TabbyList;
List<Siamese> siameseList = m_modelObj.SiameseList;
List<Husky> huskyList = m_modelObj.HuskyList;
List<Chiwawa> chiwawaList = m_modelObj.ChiwawaList;
//tree code
//add husky list
TreeNode node8 = null;
foreach (var item in huskyList)
{
node8 = new TreeNode(item.name);
}
TreeNode[] husky = new TreeNode[] { node8 };
//add chiwawa list
TreeNode node9 = null;
foreach (var item in chiwawaList)
{
node9 = new TreeNode(item.name);
}
TreeNode[] chiwawa = new TreeNode[] { node9 };
//dog breed
TreeNode node2 = new TreeNode("Husky", husky);
TreeNode node3 = new TreeNode("Chiwawa", chiwawa);
TreeNode[] dog = new TreeNode[] { node2, node3 };
//dog parent
TreeNode treeNode = new TreeNode("Dogs", dog);
treeView1.Nodes.Add(treeNode);
//add tabby list
TreeNode nodes = null;
foreach (var item in tabbyList)
{
nodes = new TreeNode(item.name);
}
TreeNode[] tabby = new TreeNode[] { nodes };
//add siamese list
TreeNode node7 = null;
foreach (var item in siameseList)
{
node7 = new TreeNode(item.name);
}
TreeNode[] siamese = new TreeNode[] { node7 };
//cat breed
TreeNode node4 = new TreeNode("Siamese", siamese);
TreeNode node5 = new TreeNode("Tabby", tabby);
TreeNode[] cat = new TreeNode[] { node4, node5 };
//cat parent
treeNode = new TreeNode("Cats", cat);
treeView1.Nodes.Add(treeNode);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void addDetailsBtn_Click(object sender, EventArgs e)
{
string animalType = comboBoxAnimalType.SelectedItem.ToString();
this.Hide();
PetInfoForm aPetInfoForm = new PetInfoForm(animalType, m_modelObj);
aPetInfoForm.Closed += (s, args) => this.Close();
aPetInfoForm.Show();
}
}
Create Object and Dynamic array in c# Refer here
TreeView Basic to understand Refer here
when you are creating the sub nodes you are overwrite the instance. you should maintain the nodes in a array.
//tree code
//add husky list
List<TreeNode> node8 = new List<TreeNode>();
foreach (var item in huskyList)
{
node8.Add(new TreeNode(item.name));
}
TreeNode[] husky = node8.ToArray();
//add chiwawa list
List<TreeNode> node9 = new List<TreeNode>();
foreach (var item in chiwawaList)
{
node9.Add(new TreeNode(item.name));
}
TreeNode[] chiwawa = node9.ToArray();
//dog breed
TreeNode node2 = new TreeNode("Husky", husky);
TreeNode node3 = new TreeNode("Chiwawa", chiwawa);
TreeNode[] dog = new TreeNode[] { node2, node3 };
//dog parent
TreeNode treeNode = new TreeNode("Dogs", dog);
treeView1.Nodes.Add(treeNode);
//add tabby list
List<TreeNode> nodes = new List<TreeNode>();
foreach (var item in tabbyList)
{
nodes.Add(new TreeNode(item.name));
}
TreeNode[] tabby =nodes.ToArray();
//add siamese list
List<TreeNode> node7 = new List<TreeNode>();
foreach (var item in siameseList)
{
node7.Add(new TreeNode(item.name));
}
TreeNode[] siamese = node7.ToArray();
//cat breed
TreeNode node4 = new TreeNode("Siamese", siamese);
TreeNode node5 = new TreeNode("Tabby", tabby);
TreeNode[] cat = new TreeNode[] { node4, node5 };
//cat parent
treeNode = new TreeNode("Cats", cat);
treeView1.Nodes.Add(treeNode);
Or Using LINQ you can create the tree like this
// Code Using Linq
TreeNode husky = new TreeNode("Husky", huskyList.Select(x => new TreeNode(x.name)).ToArray());
TreeNode chiwawa = new TreeNode("Chiwawa", chiwawaList.Select(x => new TreeNode(x.name)).ToArray());
TreeNode Siamese = new TreeNode("Siamese", siameseList.Select(x => new TreeNode(x.name)).ToArray());
TreeNode Tabby = new TreeNode("Tabby", tabbyList.Select(x => new TreeNode(x.name)).ToArray());
//parent nodes
treeView1.Nodes.AddRange(new[] {
new TreeNode("Dog", new TreeNode[] { husky, chiwawa }),
new TreeNode("Cat", new TreeNode[] { Siamese, Tabby })
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.