VB.NET实现从ListBox选中项播放音乐文件的技术问题
解决方案:实现音乐盒选中歌曲播放功能
首先,咱们先理清当前的情况:你的ListBox1里存储的是IO.FileInfo对象(因为你在Load事件里添加的是dra这个FileInfo实例),这正好帮咱们省去了拼接路径的麻烦——每个项本身就包含了文件的完整路径信息。
接下来咱们修改PlayButton1_Click事件的代码,同时移除那个未实现的AxWindowsMediaPlayer1函数(其实你应该是在窗体上拖放了一个AxWindowsMediaPlayer控件,直接用控件实例就行):
完整的Form2修改后代码
Public Class Form2 Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load ' 引用目标目录 Dim di As New IO.DirectoryInfo("c:\newfiles\Country\") Dim diar1 As IO.FileInfo() = di.GetFiles() Dim dra As IO.FileInfo ' 将目录下的文件添加到ListBox(存储的是FileInfo对象) For Each dra In diar1 ListBox1.Items.Add(dra) Next End Sub Private Sub backButton1_Click(sender As Object, e As EventArgs) Handles backButton1.Click Me.Close() Form1.Show() End Sub Private Sub PlayButton1_Click(sender As Object, e As EventArgs) Handles PlayButton1.Click ' 先判断是否有选中项,避免空引用错误 If ListBox1.SelectedItem IsNot Nothing Then ' 将选中项转换为FileInfo类型 Dim selectedFile As IO.FileInfo = DirectCast(ListBox1.SelectedItem, IO.FileInfo) ' 设置播放器的播放路径并启动播放 AxWindowsMediaPlayer1.URL = selectedFile.FullName AxWindowsMediaPlayer1.Ctlcontrols.play() End If End Sub End Class
关键细节说明
- 避免空引用报错:添加
If ListBox1.SelectedItem IsNot Nothing的判断,防止用户没选歌曲就点播放导致程序崩溃。 - 自动获取完整路径:通过
DirectCast把选中项转成FileInfo类型,然后用FullName属性直接拿到文件的完整路径,完全不用手动拼接目录和文件名,完美符合你“增删目录歌曲无需改代码”的需求。 - 播放器控件注意事项:确保你的窗体上已经拖放了一个
AxWindowsMediaPlayer控件,并且控件的名称是AxWindowsMediaPlayer1(如果不是,记得同步修改代码里的控件名和窗体上的控件名)。
这样修改后,你点击播放按钮时就会直接播放ListBox中选中的歌曲,后续只需要在C:/newfiles/country/目录下增删歌曲,ListBox的内容会自动更新,完全不用修改程序代码~
内容的提问来源于stack exchange,提问作者Joshua Ellinger
相关产品推荐
相关产品推荐

