从列表框中打开文件

时间:2013-12-06 14:50:26

标签: vb.net file file-io listbox

我正在尝试从listbox打开文件,文件可能是 Word PDF Excel 等。是否需要为每种文件类型分别设置代码,或者在双击文件时是否有某种方法可以打开文件?

listbox通过使用我所拥有的更新button来填充。

Public Class frmMain

Private Sub ButtonUpdate_Click(sender As Object, e As EventArgs) Handles ButtonUpdate.Click
    Dim folderInfo As New IO.DirectoryInfo("my directory is here")
    Dim arrFilesInFolder() As IO.FileInfo
    Dim fileInFolder As IO.FileInfo
    arrFilesInFolder = folderInfo.GetFiles("*.*")
    For Each fileInFolder In arrFilesInFolder
        ListBox1.Items.Add(fileInFolder.Name)
    Next
End Sub

Private Sub ButtonExit_Click(sender As Object, e As EventArgs) Handles ButtonExit.Click
    Me.Close()
End Sub

Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick

End Sub

End Class

3 个答案:

答案 0 :(得分:3)

在最简单的形式中,您只需要将文件名传递给Process.Start方法

Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
   Dim fullPath = Path.Combine("YourDirectoryHere", ListBox1.SelectedItem.ToString())
   System.Diagnostics.Process.Start(fullPath)
End Sub

但是,这需要您保存目录并将其与文件名重新组合。

另一个问题是您尝试打开的文件类型(扩展名)。填充列表框的方法使用*.*来加载FileInfo。因此,每种类型的文件都会添加到列表框中,如果没有与该扩展程序关联的程序,这可能会出现问题。

查看有关Process.Start(string) here

的更多信息

答案 1 :(得分:0)

我认为你需要的是Win32 API函数ShellExecute():它根据注册表中的默认关联“打开”文件。有KB article about how to call ShellExecute from VB.NET

答案 2 :(得分:0)

Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
    Dim fullPath = Path.Combine(("Your file path"), ListBox1.SelectedItem.ToString())
    System.Diagnostics.Process.Start(fullPath)

非常容易 注意:不要编辑(完整路径)