【发布时间】:2018-06-06 03:43:12
【问题描述】:
我有四个列表,我正试图让内容显示在我的 Form 上的 TreeView 中。
我当前的问题是视图中只显示每个列表中的最后一项。
我确信这与我遍历列表的方式有关,但我非常坚持如何让每个单独的列表项显示在树中。
我的树结构是:
Dog
Husky
huskylist
Chiwawa
chiwawlist
Cat
Siamese
siameselist
Tabby
tabbylist
我的 Form 代码,其中树视图是:
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();
}
}
【问题讨论】:
-
您可能需要重新访问您的代码。例如。您正在 for 循环中替换 node9 。您将看到 chiwawa 中的最后一个节点。您实际上可以执行类似于 chiawawa.Nodes.add(new TreeNode(item.name)) 的操作或使用 lambda select
-
您可以从“树结构”中获取一些自我建议,并为您的类定义某种抽象级别,以生成更“紧凑”的动物列表。那么 LINQ 将成为你的朋友。
-
您正在循环中创建
node8并在每次迭代时覆盖它.. 所以其中的值将是迭代的最后一个值.. 然后您将其添加到树列表中.. 以此类推树列表..只有最后一个值..