现在的位置: 首页 > 综合 > 正文

WinForms.TreeView控件

2012年02月17日 ⁄ 综合 ⁄ 共 1769字 ⁄ 字号 评论关闭
树形结构是如何产生的
TreeView其实没有哪个属性指明哪个节点为根节点,TopNode真不知道是干什么用的;
它的树形结构是这样产生的:
TreeView tvEg = new TreeView( );

TreeNode rootNode = new TreeNode("Folder0");
TreeNode subNode1 = new TreeNode("Folder0.1");
TreeNode subNode2 = new TreeNode("Folder0.2");

tvEg.Nodes.Add(rootNode);
rootNode.Nodes.Add(subNode1);
rootNode.Nodes.Add(subNode2);

subNode1.Nodes.Add(new TreeNode("File1"));
subNode1.Nodes.Add(new TreeNode("File2"));

subNode2.Nodes.Add(new TreeNode("File1"));

于是就会形成这样一个树形结构:

还需要注意的一点就是使用TreeNode对象时,尤其关注其Name属性和Text属性是不同的。

问题:我想实现动态加载节点集合,但是如果事先不加载,这个父节点就不会出现+/-号,于是我就无法对应其Exband事件,怎么办?
我目前的实现方式是在窗体Load时静态加载全部节点,这样就没有必要再去处理Exband事件了;
但是,一旦节点非常多,这个加载时间可能就太长了!怎么办呢?
答案:可以为其添加一个虚节点,以显示展开符号;然后在展开该节点的时候就可以先清除其所以子节点,然后动态加载其子节点

问题:如何在一个带CheckedBox的二级TreeView中实现一种有逻辑的选择操作,即(取消)选择父节点则(取消)选择了其下的所以子节点,取消全部子节点时则父节点也被取消,否则只有还有一个子节点在,父节点就是被选择状态。
答案:参考以下代码

捕捉AfterCheck事件

抱歉!评论已关闭.