日期:2014-05-17  浏览次数:20803 次

C# Treeview 问题
  for (int i = 0; myDataSet.Tables[0].Rows.Count > i; i++)
            {
                MessageBox.Show(i.ToString());
                MessageBox.Show(myDataSet.Tables[0].Rows.Count.ToString());
                TreeNode node = new TreeNode(myDataSet.Tables[0].Rows[i][1].ToString());
                MessageBox.Show(node.Text);
                //node.Tag = myDataSet.Tables["clientType"].Rows[i]["id"].ToString();
                for (int m = 0; m < this.treeView1.Nodes.Count; m++)
                {
                    TreeNode pnode = this.treeView1.GetNodeAt(m, 0);
                    if (pnode.Text == "代购")
                    {
                        pnode.Nodes.Add(node);
                    }
                }
            }






问题描述:
这段代码加上pnode.Nodes.Add(node);这句话两成循环之执行一次 去掉就执行M*i次  为什么会这样  

------解决方案--------------------
GetNodeAt(int x,int y)
这个获取的是位置,而不是行号,你这样获取,都是获取第一个节点,所以
if (pnode.Text == "代购")这个全都是true
应该改成this.treeView1.Nodes[m];

TreeNode pnode = this.treeView1.GetNodeAt(m, 0);
改成
TreeNode pnode = this.treeView1.Nodes[m];