我有这样的事件,其中i用鼠标选择在treeView1
一个节点:我如何从treeView1中仅删除选定的子节点?
private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
if (treeView1.SelectedNode != null)
{
menuStrip.Show(treeView1, e.Location);
}
}
}
然后,我有上下文菜单条我选择来回例如删除移除目录: 目录后除去我要更新的treeView1结构visualy在地方是删除我的意思是我选择的节点/子节点。
private void RemoveDirectory(string remoteFile, bool fileordir)
{
remoteFile = remoteFile.Replace('\\', '/');
if (remoteFile.StartsWith("root"))
{
remoteFile = remoteFile.Replace("root", string.Empty);
}
string deleteRequest = txtHost.Text + remoteFile;
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + deleteRequest);
if (fileordir == true)
{
request.Method = WebRequestMethods.Ftp.RemoveDirectory;
}
request.Credentials = new NetworkCredential(txtUsername.Text, txtPassword.Text);
request.Proxy = null;
request.UseBinary = false;
request.UsePassive = true;
request.KeepAlive = false;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream);
sr.ReadToEnd();
string StatusCode = response.StatusDescription;
sr.Close();
response.Close();
treeView1.SelectedNode.Remove();
}
在底部我添加的行:
treeView1.SelectedNode.Remove();
但是,这将移除整个节点。 例如,如果我选择了子节点/ b/c/d/e/f,如果我选择删除e,那么只应删除e和f。
如果我选择删除b,则应删除b c d e f。
我没有找到特定子节点的任何选定属性。
这是我的意思截图:
在这种情况下,我点击了选择的子节点$回收站 当我点击删除我想从为TreeView1删除$回收站和$回收站内的文件,但我想C将留下不会被删除。
所以在根我会看到C但C里面将没有什么,因为我只删除$回收站 如果我点击C,并删除,然后我想使treeView1.SelectedNode.Remove();这将删除/删除整个C节点。
问题是我如何才能从treeView1中删除子节点和里面的文件我的意思是说,我不会看到它,它不意味着我将它们从硬盘或我的FTP服务器中删除我只是不想查看$回收站和treeView1中的文件。
“删除整个节点”是什么意思?请解释(或附上图片),以显示预期的结果。 – Blachshma
使用节点的OnClick事件,将其设置为选中状态,然后删除该节点,或者遍历所有节点,直到它出现在有问题的节点上,然后将其删除。至于删除目录并让节点反映更改。您可以删除节点,然后根据您用来构建树视图的方法首先重建它。 –
你的问题没有多大意义。如果你让FTP服务器删除一个目录,那么所有的文件和子目录也应该被删除。然后,当然,树中的子节点也会被删除。 –