我正在使用ListView
制作文件/文件夹浏览器,当点击文件夹时,它会显示其内容,但我无法让它回到我打开该文件夹之前的位置,或更好进入上层文件夹。例如我在D:\Folder1\Subfolder1\Subfolder
并且我想要转到它的上层文件夹,我应该在D:\Folder1\Subfolder1
,每次我点击一个按钮。
我有这段代码,但它的作用是取代所有路径,使它看起来像D:\Folder1
,我不能再回头了。顺便说一句,Textbox
的默认值/文字为D:\Folder
。
这是我的代码:
Dim lvs As String
Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClick
lvs = ListView1.SelectedItems(0).Text.ToString
Form2.TextBox1.Text = Form2.TextBox1.Text & "\" & lvs
End Sub
Private Sub Button5_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim s As String = Form2.TextBox1.Text
s.Replace("\" & lvs, " ").TrimEnd()
End Sub
更新
嗨,我更新了我的代码,我做的是我将ListView
项放在Array
中,我正在删除最后一个元素(最后一个文件夹路径),它工作正常。但是当我运行我的代码时,它只执行一次并且不能重复,可能是什么错误?
代码:
Dim lvs As New List(Of String)
Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClick
If ListView1.SelectedItems.Count > 0 Then
For Each item As ListViewItem In ListView1.SelectedItems
lvs.Add(item.Text)
Next
End If
Form2.TextBox1.Text = Form2.TextBox1.Text & "\" & ListView1.SelectedItems(0).Text
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Label5.Text = Label5.Text.Replace("\" & lvs.ElementAt(lvs.Count - 1), "")
End Sub
答案 0 :(得分:1)
您需要在字符串变量中存储当前文件夹的完整路径。然后,您将通过以下方式获取父文件夹的路径:
Dim parentPath As String = IO.Path.GetDirectoryName(currentPath)
完成后,您需要将新路径设为当前路径,这可能是您之前没有做过的事情。您可能只是使用相同的基本路径来获取父级。
以下是一个很好的示例:https://code.msdn.microsoft.com/windowsapps/Get-upper-folders-in-443e975a
希望这对你有所帮助。
答案 1 :(得分:0)
简单方法:
php artisan up
如果您想要升级2级,请尝试Dim path As String = @"C:\Folder1\Folder2\Folder3\Folder4"
Dim newPath As String = Path.GetFullPath(Path.Combine(path, @"..\"));
答案 2 :(得分:0)
Dim Child As String = "C:\Parent\Child"
Dim Parent As String = System.IO.Directory.GetParent(Child).FullName
答案 3 :(得分:0)
有人帮我处理了我只需要添加lvs.RemoveAt(lvs.Count - 1)
的更新代码,因为我只删除Label
中的项目而不是List(Of String)
中的项目(我认为是一个数组,哈哈)。
我的Button
应如下所示:
Label5.Text = Label5.Text.Replace("\" & lvs(lvs.Count - 1), "")
lvs.RemoveAt(lvs.Count - 1)