我有這樣的事件,其中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服務器刪除一個目錄,那麼所有的文件和子目錄也應該被刪除。然後,當然,樹中的子節點也會被刪除。 –