我正在尝试从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
答案 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。因此,每种类型的文件都会添加到列表框中,如果没有与该扩展程序关联的程序,这可能会出现问题。
答案 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)
非常容易 注意:不要编辑(完整路径)