【问题标题】:treeview adding node problem树视图添加节点问题
【发布时间】:2011-01-05 19:44:08
【问题描述】:

我有一个名为 Holder (holder.cs) 的类,其中包含以下内容:

  string name;
  List<String> overView;

两者都有 get 和 set 访问器。

现在的问题是获取一个以所有 overView 项目作为父节点的树视图,它在下面列出了属于它的所有名称。

所以在我的treeviewForm.cs 中,到目前为止,我有以下内容可以正确列出 overView 项目。 名称是通过文本框输入的,overView 只是 4 个项目,可能会或可能不会通过选中复选框来选择。

但我不知道如何将名称添加到 overView 节点。因为我似乎无法在 treeViewList.Nodes.Add(list[i].overView[j] 后面连接任何名称应该出现的地方。

listForm.cs 类:

    List<Holder> list;

    private void ShowOverviewWithName() 
    {
        treeViewList.Nodes.Clear();

        for (int i=0; i < list.Count; i++) 
        {
            for (int j=0; j < list[i].overView.Count; j++)
            {
                //adds the overView name
                treeViewList.Nodes.Add(list[i].overView[j]); 
            }
        }

        treeViewList.ExpandAll();
    }

所以基本上我正在寻找的树视图显示是:

Overview1
   name1
   name2
   name3
Overview2
   name7
   anyothernamethatbelongshere...

包含属于概览的所有名称。

谢谢。

【问题讨论】:

    标签: c# treeview


    【解决方案1】:

    我不确定你的问题...

    但假设有这个代码:

    var h1 = new Holder{ name = "name1", overView = new List<string>{ "Overview1", "Overview2" } };
    var h2 = new Holder{ name = "name2", overView = new List<string>{ "Overview1" } };
    var h3 = new Holder{ name = "name3", overView = new List<string>{ "Overview1" } };
    var h4 = new Holder{ name = "name4", overView = new List<string>{ "Overview2" } };
    
    List<Holder> list = new List<Holder> { h1, h2, h3, h4 };
    
    treeViewList.Nodes.Clear();
    
    for (int i = 0; i < list.Count; i++)
    {
        for (int j = 0; j < list[i].overView.Count; j++)
        {
            string overviewName = list[i].overView[j];
    
            //adds the overView name if doesn't exist yet
            TreeNode parent;
            if (!treeViewList.Nodes.ContainsKey(overviewName))
                parent = treeViewList.Nodes.Add(overviewName,overviewName);
            else
                parent = treeViewList.Nodes[overviewName];
    
            // adds the name under the overView
            parent.Nodes.Add(list[i].name);
        }
    }
    
    treeViewList.ExpandAll();
    

    你会得到以下树:

    【讨论】:

      【解决方案2】:

      你需要:

      1. 创建顶级“Overviewx”节点
      2. 将子节点添加到您刚刚创建的顶级节点中
      3. 将顶级节点添加到树中
      4. 对所有顶级节点重复。

      希望这会有所帮助!

      【讨论】:

      • 问题实际上是将子节点(名称)添加到父节点概览中。概览已显示,但不确定使用什么结构来添加这些名称。
      猜你喜欢
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 2012-02-10
      • 2013-03-25
      • 2015-03-20
      相关资源
      最近更新 更多