C# treeview 动态添加结点

C# treeview 动态添加结点,第1张

你好!很高兴为你解答!

结合Access数据库代码如下:

  private DataSet GetData(string sql)

        {   //不知道你用的什么数据库,我由于最近在用Access,

            //所以函数是连接的Access,得到    DataSet

           //如果用SQL Server或者其他是类似的,传入sql语句,得到DataSet

           //DBAccess是自定义类,没有贴上代码,如果要具体的数据库连接代码,说一下

            string accessDb = @"E:\dat.mdb"

            DBAccess access = new DBAccess(accessDb, sql)

            return access.GetDataSet()

        }

    private void button1_Click(object sender, EventArgs e)

        {

                DataSet ds = GetData("select 父节点 from 表")//获取数据集dataset

                foreach (DataRow row in ds.Tables[0].Rows)

                {

                    TreeNode node = new TreeNode(row["父节点"].ToString())

                    node.Name = row["父节点"].ToString()

                    if (!root.Nodes.ContainsKey(node.Name))

                    {

                        root.Nodes.Add(node)

                    }

                }

        }

        private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)

        {

            TreeNode clickedNode = e.Node

            string name = clickedNode.Text

            DataSet ds = GetData("select 子节点 from 表 where 父节点='" + name + "'")           

            foreach (DataRow row in ds.Tables[0].Rows)

            {

                TreeNode node = new TreeNode(row["子节点"].ToString())

                node.Name = row["子节点"].ToString()

                if (!clickedNode.Nodes.ContainsKey(node.Name))

                {

                    clickedNode.Nodes.Add(node)

                }

            }

        }

希望对你有所帮助,还望采纳,谢谢!!!

C#里treeview向指定NAME节点添加子节点时应就这样做:

先要用treenode定义节点对象。

TreeView1.SelectedNode.ChildNodes.Add //给选中的添加。

TreeView1.Nodes[index].ChildNodes.Add //给指定index的节点添加。

TreeView控件用来显示信息的分级视图,如同Windows里的资源管理器的目录。TreeView控件中的各项信息都有一个与之相关的Node对象。

TreeView显示Node对象的分层目录结构,每个Node对象均由一个Label对象和其相关的位图组成。在建立TreeView控件后,我们可以展开和折叠、显示或隐藏其中的节点。

TreeView控件一般用来显示文件和目录结构、文档中的类层次、索引中的层次和其他具有分层目录结构的信息。

原因很明显,当有新增的节点,Items已经发生了改变,所以你的items[x]是一个变量而非常量。

一个最笨的办法就是,在没有添加任何子节点前,把节点用StaticNodes:array of TTreeNode数组保存起来,然后再通过StaticNodes[x].AddChild进行添加。

如果想动态一点就得加一个搜索功能(TreeView控件并没有附带节点搜索功能),你添加子节点前得手动查询到父节点。

以下是一个比较简单的方法:

function FindNodeByText(aTree:TTreeViewtheTexts:String):TTreeNode

var

i:Integer

begin

Result:=NIL

for i:=0 to aTree.Items.Count-1 do

if aTree.Items[i].Text=theTexts then

begin

Result:=aTree.Items[i]

Break

end

end

查询的方法有很多更有效率的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11599413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存