You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:15:20