/// <summary> /// 重置一个节点 /// </summary> /// <param name="tn"></param> /// <param name="acbCallback"></param> /// <param name="state"></param> private void ReLoadNode(TreeNode tn, AsyncCallback acbCallback = null, object state = null) { FileType ft = FileType.磁盘; var mytag = tn.Tag as myNodeTag; if (mytag != null) { ft = mytag.FileType; } var parent = tn.Parent; var idx = tn.Index; tn.Remove(); tn.Nodes.Clear(); if (acbCallback == null) { state = tn; acbCallback = ar => { if (parent == null) { SetNodeIdx(tn, 3); } else { AddChildNode(parent, tn, ft == FileType.文件, idx); } }; } if (ft == FileType.文件) { var fi = ((tn.Tag as myNodeTag).Tag as FileInfo); fi.Refresh(); if (!fi.Exists) { ReLoadNode(parent);//不存在就刷新父节点 return; } AddChildNode(parent, tn, ft == FileType.文件, idx); return; } GetInDirectoryFiles handler = new GetInDirectoryFiles(GetInDirectoryFiles); IAsyncResult result = handler.BeginInvoke(tn, acbCallback, state); }