238 {
239 this.DoSelectTreeNode(node);
240 return true;
241 }
242 else
243 {
244 return false;
245 }
246 }
247
248 protected abstract bool Identical(T x, T y);
249
250 protected virtual void DoSelectTreeNode(TreeNode node)
251 {
252 this.SelectedNode = node;
253 this.ExpandTreeNode(node.Parent);
254 }
255
256 public virtual TreeNode FindChildNode(TreeNodeCollection nodes, T data)
257 {
258 foreach (TreeNode node in nodes)
259 {
260 var nodeData = this.GetTreeNodeData(node);
261 if (this.Identical(nodeData, data))
262 {
263 return node;
264 }
265 }
266
267 return null;
268 }
269
270 public virtual void ExpandTreeNode(TreeNode node)
271 {
272 if (null != node)
273 {
274 node.Expand();
275 this.ExpandTreeNode(node.Parent);
276 }
277 }
278
279 public abstract T GetTreeNodeData(TreeNode node);
280 }
281 }
完整项目下载
|