【问题标题】:Get subfolder by name and navigate Webrowser to that path按名称获取子文件夹并将 Web 浏览器导航到该路径
【发布时间】:2016-09-26 15:52:51
【问题描述】:

我的组合框包含文件夹名称(位于我的 C:\ 子文件夹中)作为项目。我想根据组合框中选定的文件夹名称导航我的 Web 浏览器。这是我尝试过的:

Dim myDirectories = Directory.GetDirectories("C:\", MyCombo.Text, SearchOption.AllDirectories)

          WebBrowser1.Navigate(myDirectories)

我必须如何搜索子文件夹才能完成这项工作?我收到错误:“指定的地址不存在。”在浏览器控制中。

编辑(让自己更清楚一点):

Example - 有一个名为 Test 的文件夹和一个名为 Example....示例”。

  1. 我从组合框项目中选择“测试”或“示例”;

  2. 然后通过代码,Webbrowser 应该导航到我 PC 上的那个文件夹 URL。

因此代码应该按照 Combobox 中的名称搜索所有文件夹/子文件夹,然后将路径传递给 Webbrowser URL(如果有任何匹配条件)。

【问题讨论】:

  • 尝试在您的浏览器中自己做,当您运行时,您将拥有用于 url 所需的格式。
  • 对不起,我不太关注你,我是 vb.net 初学者。格式是问题?
  • 为什么不只是WebBrowser1.Navigate("C:\"+MyCombo.Text)
  • @Hackerman,很高兴知道我也可以这样做,但这不起作用。必须先搜索文件夹,它位于我的 C:\ 子文件夹中。如果 MyCombo.Text = "Example" 那么您的建议只是指向 C:\Example\,仅此而已。而且我的文件夹位于不同的子文件夹中...
  • 好的,但您需要记住 Directory.GetDirectories 返回一个字符串数组,这就是您的代码无法正常工作的原因..如果您有任何疑问,请问我 :)

标签: vb.net webbrowser-control


【解决方案1】:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim strFiles As String() = IO.Directory.GetDirectories("C:\")
    For Each sDir As String In strFiles
        ListBox1.Items.Add(sDir)
    Next
End Sub

Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    If ListBox1.Items.Count > -1 Then
        Process.Start("explorer", ListBox1.SelectedItem.ToString)
    End If
End Sub

【讨论】:

  • 如何在 Webbrowser 中使用它,我没有 Listbox ?文件夹名称是从组合框获取的?
  • 什么意思?它对我来说很好用 - 我可以像在 Windows 资源管理器中一样看到我的本地路径,具有所有功能(剪切/复制/粘贴/拖放...)。
【解决方案2】:

解决了。我就是这样做的,请随时提出更好的建议:

Dim myDirectory = Directory.GetDirectories("C:\", MyCombo.Text, SearchOption.AllDirectories)

 For Each folder As String In myDirectory

            WebBrowser1.Navigate(folder)
 Next

【讨论】:

    【解决方案3】:

    为什么要使用网络浏览器获取本地路径? Web 浏览器用于 Internet,这就是为什么您在寻找 http 而不是 c:\ 时收到错误的原因。

    用组合框代替列表框

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim strFiles As String() = IO.Directory.GetDirectories("C:\")
        For Each sDir As String In strFiles
            ComboBox1.Items.Add(sDir)
        Next
    
    End Sub
    
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        If ComboBox1.Items.Count > -1 Then
            Process.Start("explorer", ComboBox1.SelectedItem.ToString)
        End If
    End Sub
    

    如果您愿意,可以使用该 ListBox 来保存所选目录中的文件列表,从而完全删除 Web 浏览器控件

        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dim strFiles As String() = Nothing
        If ComboBox1.Items.Count > 0 Then
            strFiles = IO.Directory.GetFiles(ComboBox1.SelectedItem.ToString)
            ListBox1.Items.Clear()
            For Each sFile As String In strFiles
                ListBox1.Items.Add(IO.Path.GetFileName(sFile))
            Next
        End If
    End S
    

    【讨论】:

    • Combobox 是因为它正在填充 Oracle DB 表值(这些值也是我 PC 上文件夹的名称)。我认为 Lisbox 看起来很难看。有很多 DB 值。 Webbrowser 是因为它使您能够拖放文件,就像在 Windows 资源管理器中一样。我使用 Webbrowser 控件打开可以执行此操作的表单,并且仅在此文件夹中,不允许用户查看其他任何内容。打开 Windows 资源管理器会显示所有内容,我也不熟悉在窗体中停靠 Windows 资源管理器。如果您知道更好的解决方案,请告诉我。
    • 很高兴您解决了这个问题,但它被称为 Web 浏览器控件,因为它用于浏览网站。 Windows 资源管理器会更好。您说您不想授予某些用户访问权限,那么为什么不使用 Windows 安全性,如果用户在某个组中显示或填充控件
    • 是的,我知道 windows Explorer 会更合适,但这就像一个设计问题 - 我只需要显示某些目录,而不是像 Window Explorer 打开的那样 - 想象一下,与 Webbrowser 的外观相同(显示名称/类型/大小)。它会使用 Windows 资源管理器,但我还没有看到如何将它插入表单并在视觉上剪切它的左侧......我实际上也在尝试使用 Listview,但是有很多问题,因为我需要所有功能(剪切/copy/paste/drag/drop,显示图标,浏览目录,显示文件夹和文件图标,打开文件等)。任何建议将不胜感激。
    猜你喜欢
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多