树节点相互移动操作----使用微软treeview控件
2007-08-08 19:13
381 查看
树节点移动操作----使用微软treeview控件[原创]
树节点移动操作
----使用微软treeview控件
作者:pfengk
MSN: pfengk@hotmail.com
更多文章请访问:http://www.cnblogs.com/pfengk/
目录
概述................................................................................................................................. 1
操作演示.......................................................................................................................... 1
实现源码:[C#]................................................................................................................ 2
源码中引用命名空间Microsoft.Web.UI.WebControls。
本文描述节点移动算法效率非常低下,仅仅适合于节点不多的情况下使用。还请高手们多多指教。联系我的msn,谢谢你们!
![](http://pfengk.cnblogs.com/images/cnblogs_com/pfengk/050705007.JPG)
选择节点之后
![](http://pfengk.cnblogs.com/images/cnblogs_com/pfengk/050705002.JPG)
点击[赋予]按钮之后
![](http://pfengk.cnblogs.com/images/cnblogs_com/pfengk/050705003.JPG)
再次点击[赋予]按钮之后
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
"一棵树到另一棵树的 节点移动方法"#region "一棵树到另一棵树的 节点移动方法"
2
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
3
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
4
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 从parentTreeView(森林)的所有根节点中查找childTreeNode是否存在(使用Text属性为关键字比较),存在返回true.
6
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
8
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="childTreeNode"></param>
10
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="parentTreeNode"></param>
12
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
14
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool FindNodeFromChildNodes(TreeNode childTreeNode,TreeView parentTreeView)
16
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
18
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
20
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(TreeNode tempTreeNode in parentTreeView.Nodes)
24
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
26
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (childTreeNode.Text == tempTreeNode.Text)
28
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
30
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
32
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
34
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
36
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
38
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
40
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
42
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
46
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 从parentTreeView(森林)的所有根节点中查找childTreeNode是否存在(使用Text属性为关键字比较),存在返回true.
48
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
50
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="childTreeNode"></param>
52
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="parentTreeNode"></param>
54
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
56
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool FindNodeFromChildNodes(TreeNode childTreeNode,TreeView parentTreeView,ref TreeNode foundTreeNode)
58
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
60
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
62
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(TreeNode tempTreeNode in parentTreeView.Nodes)
66
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
68
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (childTreeNode.Text == tempTreeNode.Text)
70
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
72
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
74
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foundTreeNode = tempTreeNode;
76
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
78
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
80
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
82
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
84
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
86
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
90
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 从parentTreeNode(根节点)的所有节点中查找childTreeNode是否存在(使用Text属性为关键字比较),存在返回true.
92
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
94
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="childTreeNode"></param>
96
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="parentTreeNode"></param>
98
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
100
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool FindNodeFromChildNodes(TreeNode childTreeNode,TreeNode parentTreeNode)
102
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
104
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
106
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(TreeNode tempTreeNode in parentTreeNode.Nodes)
110
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
112
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (childTreeNode.Text == tempTreeNode.Text)
114
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
116
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
118
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
120
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
122
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
124
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
126
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
128
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
132
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
133
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 从parentTreeView(森林)的所有根节点中查找childTreeNode是否存在(使用Text属性为关键字比较),存在返回true.
134
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
136
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="childTreeNode"></param>
138
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="parentTreeNode"></param>
140
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
142
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
143
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool FindNodeFromChildNodes(TreeNode childTreeNode,TreeNode parentTreeNode,ref TreeNode foundTreeNode)
144
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
145
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
146
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
147
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
148
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
150
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
151
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(TreeNode tempTreeNode in parentTreeNode.Nodes)
152
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
153
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
154
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
155
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (childTreeNode.Text == tempTreeNode.Text)
156
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
158
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
160
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foundTreeNode = tempTreeNode;
162
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
164
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
165
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
166
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
167
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
168
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
170
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
172
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
173
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
176
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
177
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 移除叶子节点。首先判断是否为叶子节点或根节点,是则移除,否则跳出返回
178
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
180
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
181
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="treeNode"></param>
182
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
184
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
185
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool RemoveLeafageChildNode(ref TreeNode treeNode)
186
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
187
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
188
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
190
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (treeNode.Nodes == null | treeNode.Nodes.Count == 0)
192
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
193
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//是子节点时候
194
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
195
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (treeNode.Parent is TreeNode)
196
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//父节点为节点类型时
198
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int nodesCount = ((TreeNode)treeNode.Parent).Nodes.Count;
200
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
201
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (nodesCount > 1)
202
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
203
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//还有兄弟叶子节点时候,仅仅删除本节点
204
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
205
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
treeNode.Remove();
206
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
208
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
209
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
210
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
211
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
212
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
213
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//是唯一叶子节点时候,还要删除父节点
214
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
215
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//删除本节点
216
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
217
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode thisParentTreeNode = (TreeNode)treeNode.Parent;
218
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
treeNode.Remove();
220
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
221
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//删除父节点
222
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
223
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = RemoveLeafageChildNode(ref thisParentTreeNode);
224
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
225
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
226
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
228
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
229
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
230
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
231
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//父节点不为节点类型时,他一定是根节点
232
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
233
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
treeNode.Remove();
234
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
236
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
237
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
238
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
240
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
241
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
242
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
243
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
244
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
245
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
247
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
248
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
249
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 【MoveNodes】将节点分支中所有被选中的节点,移动到另外一个节点分支上。前提根节点必须保留,且各节点Text值唯一。
250
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
251
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
252
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
253
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="fromTreeView"></param>
254
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="toTreeNode"></param>
256
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void MoveNodes(ref TreeNode fromTreeNode,ref TreeNode toTreeNode)
258
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
260
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool selected = true;
262
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//遍历fromTreeNode子节点,比较选中子节点在toTreeNode的子节点集中是否存在,不存在则移动子节点;存在跳过
264
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
265
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int h = fromTreeNode.Nodes.Count-1;
266
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for (int i = h ; i>=0;i--)
268
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
270
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
271
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode rootNode = new TreeNode();
272
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rootNode = fromTreeNode.Nodes[i];
274
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//根节点是否被选中,否则跳过。
276
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
277
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (rootNode.Checked == selected)
278
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
280
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
281
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//本节点是否为叶子节点
282
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
283
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool isDeleted = false;
284
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
285
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//子节点在 toTreeNode中的子节点集 中是否存在
286
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (!FindNodeFromChildNodes (rootNode,toTreeNode))
288
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
289
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
290
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
291
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动节点,判断是否为子节点。是子节点则从fromTreeNode中移除,同时判断是否为唯一节点,是同时移除父节点,
292
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//反之忽略。
294
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
295
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode rootNodeClone = ((TreeNode)rootNode.Clone());
296
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int k = rootNodeClone.Nodes.Count;
298
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
299
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int j=0; j<k;j++)
300
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
301
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
302
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
303
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rootNodeClone.Nodes.RemoveAt(0);
304
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
305
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
306
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
307
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
toTreeNode.Nodes.Add(rootNodeClone);
308
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
309
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
310
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
311
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
isDeleted = RemoveLeafageChildNode(ref rootNode);
312
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
313
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
314
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
315
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
316
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
317
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动子节点的整个分支
318
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
319
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (!isDeleted)
320
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
321
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
322
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
323
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode toRootNode = new TreeNode();
324
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
325
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//定位toTreeNode中与rootNode相同的节点位置。
326
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
327
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FindNodeFromChildNodes(rootNode,toTreeNode,ref toRootNode);
328
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
329
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动fromTreeNode中rootNode的分支中所有选中节点到toTreeNode的toRootNode分支中
330
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
331
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MoveNodes(ref rootNode,ref toRootNode);
332
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
333
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
334
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
335
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
336
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
337
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
338
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
339
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
340
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
341
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
342
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
343
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 【MoveNodes】将一棵树中所有被选中的节点,移动到另外一棵树上。前提根节点必须保留,且各节点Text值唯一。
344
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
345
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
346
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
347
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="fromTreeNode"></param>
348
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
349
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="toTreeNode"></param>
350
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
351
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void MoveNodes(ref TreeView fromTreeView,ref TreeView toTreeView)
352
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
353
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
354
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
355
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool selected = true;
356
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
357
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
358
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
359
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//遍历fromTreeView根节点,比较选中节点在toTreeView的根节点集中是否存在,不存在则移动节点;存在跳过
360
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
361
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
362
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
363
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int h = fromTreeView.Nodes.Count-1;
364
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
365
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for (int i = h ; i>=0;i--)
366
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
367
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
368
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
369
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode rootNode = new TreeNode();
370
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
371
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rootNode = fromTreeView.Nodes[i];
372
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
373
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//根节点是否被选中,否则跳过。
374
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
375
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (rootNode.Checked == selected)
376
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
377
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
378
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
379
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//本节点是否为叶子节点
380
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
381
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool isDeleted = false;
382
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
383
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//根节点在 toTreeView中的根节点中是否存在
384
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
385
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (!FindNodeFromChildNodes (rootNode,toTreeView))
386
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
387
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
388
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
389
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动节点,判断是否为子节点。是子节点则从fromTreeView中移除,同时判断是否为唯一节点,是同时移除父节点,
390
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
391
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//反之忽略。
392
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
393
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode rootNodeClone = ((TreeNode)rootNode.Clone());
394
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
395
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int k = rootNodeClone.Nodes.Count;
396
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
397
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int j=0; j<k;j++)
398
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
399
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
400
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
401
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rootNodeClone.Nodes.RemoveAt(0);
402
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
404
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
405
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
406
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
407
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
toTreeView.Nodes.Add(rootNodeClone);
408
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
409
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
410
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
isDeleted = RemoveLeafageChildNode(ref rootNode);
412
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
413
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
414
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
415
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动根节点的整个分支
416
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (!isDeleted)
418
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
419
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
420
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
421
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode toRootNode = new TreeNode();
422
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
423
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//定位toTreeView中与rootNode相同的节点位置。
424
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
425
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FindNodeFromChildNodes(rootNode,toTreeView,ref toRootNode);
426
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
427
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动fromTreeView中rootNode的分支中所有选中节点到toTreeView的toRootNode分支中
428
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
429
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MoveNodes(ref rootNode,ref toRootNode);
430
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
431
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
432
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
433
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
434
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
435
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
436
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
437
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
438
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
439
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
440
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
441
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
#endregion
442
树节点移动操作
----使用微软treeview控件
作者:pfengk
MSN: pfengk@hotmail.com
更多文章请访问:http://www.cnblogs.com/pfengk/
目录
概述................................................................................................................................. 1
操作演示.......................................................................................................................... 1
实现源码:[C#]................................................................................................................ 2
概述
本文集中体现树节点移动实现代码其中很多其他代码省略。如果你对treeview控件不了解,请参阅我的另外一篇文章《web方式下权限分配简单实现》。源码中引用命名空间Microsoft.Web.UI.WebControls。
本文描述节点移动算法效率非常低下,仅仅适合于节点不多的情况下使用。还请高手们多多指教。联系我的msn,谢谢你们!
操作演示
窗体载入初始界面选择节点之后
点击[赋予]按钮之后
再次点击[赋予]按钮之后
实现源码:[C#]
1![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
"一棵树到另一棵树的 节点移动方法"#region "一棵树到另一棵树的 节点移动方法"
2
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
3
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
4
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 从parentTreeView(森林)的所有根节点中查找childTreeNode是否存在(使用Text属性为关键字比较),存在返回true.
6
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
8
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="childTreeNode"></param>
10
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="parentTreeNode"></param>
12
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
14
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool FindNodeFromChildNodes(TreeNode childTreeNode,TreeView parentTreeView)
16
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
18
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
20
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(TreeNode tempTreeNode in parentTreeView.Nodes)
24
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
26
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (childTreeNode.Text == tempTreeNode.Text)
28
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
30
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
32
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
34
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
36
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
38
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
40
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
42
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
46
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 从parentTreeView(森林)的所有根节点中查找childTreeNode是否存在(使用Text属性为关键字比较),存在返回true.
48
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
50
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="childTreeNode"></param>
52
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="parentTreeNode"></param>
54
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
56
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool FindNodeFromChildNodes(TreeNode childTreeNode,TreeView parentTreeView,ref TreeNode foundTreeNode)
58
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
60
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
62
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(TreeNode tempTreeNode in parentTreeView.Nodes)
66
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
68
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (childTreeNode.Text == tempTreeNode.Text)
70
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
72
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
74
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foundTreeNode = tempTreeNode;
76
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
78
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
80
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
82
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
84
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
86
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
90
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 从parentTreeNode(根节点)的所有节点中查找childTreeNode是否存在(使用Text属性为关键字比较),存在返回true.
92
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
94
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="childTreeNode"></param>
96
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="parentTreeNode"></param>
98
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
100
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool FindNodeFromChildNodes(TreeNode childTreeNode,TreeNode parentTreeNode)
102
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
104
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
106
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(TreeNode tempTreeNode in parentTreeNode.Nodes)
110
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
112
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (childTreeNode.Text == tempTreeNode.Text)
114
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
116
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
118
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
120
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
122
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
124
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
126
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
128
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
132
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
133
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 从parentTreeView(森林)的所有根节点中查找childTreeNode是否存在(使用Text属性为关键字比较),存在返回true.
134
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
136
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="childTreeNode"></param>
138
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="parentTreeNode"></param>
140
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
142
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
143
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool FindNodeFromChildNodes(TreeNode childTreeNode,TreeNode parentTreeNode,ref TreeNode foundTreeNode)
144
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
145
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
146
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
147
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
148
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
150
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
151
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(TreeNode tempTreeNode in parentTreeNode.Nodes)
152
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
153
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
154
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
155
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (childTreeNode.Text == tempTreeNode.Text)
156
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
158
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
160
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foundTreeNode = tempTreeNode;
162
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
164
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
165
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
166
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
167
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
168
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
170
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
172
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
173
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
176
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
177
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 移除叶子节点。首先判断是否为叶子节点或根节点,是则移除,否则跳出返回
178
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
180
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
181
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="treeNode"></param>
182
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <returns></returns>
184
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
185
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public bool RemoveLeafageChildNode(ref TreeNode treeNode)
186
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
187
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
188
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool returnValue = false;
190
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (treeNode.Nodes == null | treeNode.Nodes.Count == 0)
192
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
193
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//是子节点时候
194
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
195
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (treeNode.Parent is TreeNode)
196
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//父节点为节点类型时
198
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int nodesCount = ((TreeNode)treeNode.Parent).Nodes.Count;
200
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
201
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (nodesCount > 1)
202
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
203
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//还有兄弟叶子节点时候,仅仅删除本节点
204
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
205
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
treeNode.Remove();
206
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
208
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
209
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
210
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
211
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
212
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
213
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//是唯一叶子节点时候,还要删除父节点
214
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
215
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//删除本节点
216
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
217
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode thisParentTreeNode = (TreeNode)treeNode.Parent;
218
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
treeNode.Remove();
220
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
221
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//删除父节点
222
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
223
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = RemoveLeafageChildNode(ref thisParentTreeNode);
224
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
225
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
226
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
228
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
229
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
230
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
231
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{//父节点不为节点类型时,他一定是根节点
232
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
233
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
treeNode.Remove();
234
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
returnValue = true;
236
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
237
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
238
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
240
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
241
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return returnValue;
242
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
243
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
244
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
245
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
247
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
248
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
249
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 【MoveNodes】将节点分支中所有被选中的节点,移动到另外一个节点分支上。前提根节点必须保留,且各节点Text值唯一。
250
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
251
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
252
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
253
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="fromTreeView"></param>
254
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="toTreeNode"></param>
256
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void MoveNodes(ref TreeNode fromTreeNode,ref TreeNode toTreeNode)
258
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
260
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool selected = true;
262
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//遍历fromTreeNode子节点,比较选中子节点在toTreeNode的子节点集中是否存在,不存在则移动子节点;存在跳过
264
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
265
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int h = fromTreeNode.Nodes.Count-1;
266
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for (int i = h ; i>=0;i--)
268
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
270
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
271
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode rootNode = new TreeNode();
272
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rootNode = fromTreeNode.Nodes[i];
274
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//根节点是否被选中,否则跳过。
276
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
277
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (rootNode.Checked == selected)
278
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
280
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
281
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//本节点是否为叶子节点
282
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
283
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool isDeleted = false;
284
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
285
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//子节点在 toTreeNode中的子节点集 中是否存在
286
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (!FindNodeFromChildNodes (rootNode,toTreeNode))
288
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
289
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
290
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
291
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动节点,判断是否为子节点。是子节点则从fromTreeNode中移除,同时判断是否为唯一节点,是同时移除父节点,
292
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//反之忽略。
294
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
295
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode rootNodeClone = ((TreeNode)rootNode.Clone());
296
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int k = rootNodeClone.Nodes.Count;
298
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
299
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int j=0; j<k;j++)
300
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
301
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
302
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
303
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rootNodeClone.Nodes.RemoveAt(0);
304
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
305
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
306
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
307
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
toTreeNode.Nodes.Add(rootNodeClone);
308
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
309
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
310
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
311
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
isDeleted = RemoveLeafageChildNode(ref rootNode);
312
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
313
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
314
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
315
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
316
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
317
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动子节点的整个分支
318
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
319
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (!isDeleted)
320
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
321
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
322
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
323
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode toRootNode = new TreeNode();
324
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
325
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//定位toTreeNode中与rootNode相同的节点位置。
326
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
327
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FindNodeFromChildNodes(rootNode,toTreeNode,ref toRootNode);
328
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
329
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动fromTreeNode中rootNode的分支中所有选中节点到toTreeNode的toRootNode分支中
330
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
331
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MoveNodes(ref rootNode,ref toRootNode);
332
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
333
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
334
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
335
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
336
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
337
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
338
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
339
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
340
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
341
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
/**//// <summary>
342
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
343
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 【MoveNodes】将一棵树中所有被选中的节点,移动到另外一棵树上。前提根节点必须保留,且各节点Text值唯一。
344
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
345
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
346
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
347
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="fromTreeNode"></param>
348
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
349
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="toTreeNode"></param>
350
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
351
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void MoveNodes(ref TreeView fromTreeView,ref TreeView toTreeView)
352
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
353
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
354
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
355
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool selected = true;
356
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
357
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
358
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
359
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//遍历fromTreeView根节点,比较选中节点在toTreeView的根节点集中是否存在,不存在则移动节点;存在跳过
360
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
361
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
362
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
363
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int h = fromTreeView.Nodes.Count-1;
364
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
365
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for (int i = h ; i>=0;i--)
366
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
367
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
368
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
369
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode rootNode = new TreeNode();
370
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
371
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rootNode = fromTreeView.Nodes[i];
372
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
373
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//根节点是否被选中,否则跳过。
374
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
375
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (rootNode.Checked == selected)
376
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
377
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
378
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
379
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//本节点是否为叶子节点
380
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
381
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool isDeleted = false;
382
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
383
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//根节点在 toTreeView中的根节点中是否存在
384
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
385
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (!FindNodeFromChildNodes (rootNode,toTreeView))
386
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
387
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
388
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
389
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动节点,判断是否为子节点。是子节点则从fromTreeView中移除,同时判断是否为唯一节点,是同时移除父节点,
390
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
391
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//反之忽略。
392
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
393
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode rootNodeClone = ((TreeNode)rootNode.Clone());
394
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
395
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int k = rootNodeClone.Nodes.Count;
396
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
397
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int j=0; j<k;j++)
398
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
399
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
400
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
401
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rootNodeClone.Nodes.RemoveAt(0);
402
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
404
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
405
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
406
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
407
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
toTreeView.Nodes.Add(rootNodeClone);
408
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
409
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
410
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
isDeleted = RemoveLeafageChildNode(ref rootNode);
412
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
413
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
414
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
415
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动根节点的整个分支
416
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (!isDeleted)
418
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
419
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
420
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
421
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TreeNode toRootNode = new TreeNode();
422
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
423
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//定位toTreeView中与rootNode相同的节点位置。
424
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
425
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FindNodeFromChildNodes(rootNode,toTreeView,ref toRootNode);
426
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
427
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//移动fromTreeView中rootNode的分支中所有选中节点到toTreeView的toRootNode分支中
428
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
429
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MoveNodes(ref rootNode,ref toRootNode);
430
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
431
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
432
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
433
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
434
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
435
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
436
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
437
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
438
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
439
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
440
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
441
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
#endregion
442
![](http://pfengk.cnblogs.com/Images/OutliningIndicators/None.gif)
相关文章推荐
- 树节点移动操作----使用微软treeview控件
- Mouse without Borders是微软的一个软件实验项目,这款软件可让鼠标自由在局域网中的多台电脑间移动,键盘输入实现无缝切换,还可以直接用鼠标相互拖拽文件。 如果经常需要同时使用两台以
- javascript对于dom的操作--得到兄弟节点 && getElementsByTagName使用方法
- Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置
- asp.net TreeView安装、使用(如何将TreeView打包发布)(带CheckBox选择框的TreeView的初始化,TreeView客户端操作:选择父节点后自动选择所有子节点,子节点选择后自动选择父节点)(TreeView节点精确定位)2005-12-23更新
- 操作Cassandra(2)-添加,替换,移动和删除节点
- 转载 javascript节点的操作 创建、添加、移除、移动、复制
- 【ZooKeeper Notes 7】使用super身份对有权限的节点进行操作
- 利用递归轻松实现TreeView控件中子节点的全选操作[VB]
- iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作
- Adobe AIR迷你教程 -- 使用自定义窗口以及对窗口的移动,缩放,关闭操作
- 1 详解PHP使用DOMDocument类遍历、增加、修改、删除XML节点操作
- Adobe AIR迷你教程 — 使用自定义窗口以及对窗口的移动,缩放,关闭操作
- 表格:增加、删除行,鼠标移动改变行背景色,行内文本框自适应td,a除下划线(使用节点实现)
- 详解PHP使用DOMDocument类遍历、增加、修改、删除XML节点操作
- iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作
- 使用jdom操作xml文件 去除子节点带有命名空间
- 使用js如何获取treeview控件的当前选中的节点
- ArcGIS for Android Runtime100 基本操作(六)——移动地图包MMPK的使用
- DOM操作——怎样添加、移除、移动、复制、创建和查找节点