Uit listbox mp3 afspelen

Status
Niet open voor verdere reacties.
Ik heb even een voorbeeldproject gemaakt. Klik hier om te downloaden.

12564670.jpg
 
Laatst bewerkt:
ik heb het voorbeeld bekeken en de export functie werkt inderdaad maar helaas ook voor alle nummers in de lijst.

Ik heb deze functie al werkend en wilde dezelfde functie ook hebben voor 1 geselecteerd nummer (ipv de gehele lijst)
 
Op regel 30, verander:

Code:
For Each item As ListViewItem In ListView1.Items

In:

Code:
For Each item As ListViewItem In ListView1.SelectedItems
 
werkt inderdaad perfect maar hoe krijg ik dit in mij project

kan ik niet gewoon de code van mij ombouwen zodat hij werkt.

Code:
Public Class album1

    Private Sub album1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ControlBox = False
        PictureBox2.Image = New Bitmap(Application.StartupPath + "\hoesjes\1.jpg")
        For Each file As IO.FileInfo In New IO.DirectoryInfo(Application.StartupPath + "\albums\1").GetFiles("*.mp3")
            Dim lvi As New ListViewItem
            lvi.Text = file.Name 'Alleen bestandsnaam als item tekst
            lvi.Tag = file.FullName 'Volledige pad opslaan in de Tag property. Elk item heeft zn eigen Tag
            lvi.SubItems.Add(Application.StartupPath + "\albums\1")
            ListView1.Items.Add(lvi)
        Next
    End Sub

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Albums.Show()
        Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
            My.Computer.FileSystem.CopyDirectory( 
            Application.StartupPath & "\albums\1",
            open.SelectedPath, _
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, _
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If
    End Sub

    Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label7.Click
        Pc_info.Show()
    End Sub

    Private Sub ListView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.Click
        AxWindowsMediaPlayer1.URL = ListView1.SelectedItems(0).Tag
        Label2.Text = ListView1.SelectedItems(0).Text
    End Sub
    Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
        Dim afsluiten As Integer
        afsluiten = MsgBox("wil je echt afsluiten?", vbDefaultButton2 + vbYesNo, "Waarschuwing")
        If afsluiten = vbYes Then
            End
        Else

        End If
    End Sub

    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
        Label10.Text = TrackBar1.Value

    End Sub

    [COLOR="red"]Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
        Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
            My.Computer.FileSystem.CopyFile(
             ListView1.SelectedItems.Item(0).SubItems(1).Tag,
            open.SelectedPath,
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If
    End Sub[/COLOR]

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked = True Then
            AxWindowsMediaPlayer1.settings.mute = True
        Else
            AxWindowsMediaPlayer1.settings.mute = False
        End If
    End Sub
End Class
 
Ik zie al waar je de fout maakt. Jij doet dit:

[CPP]lvi.SubItems.Add(Application.StartupPath + "\albums\1")[/CPP]

Maar dat moet zijn:

[CPP]lvi.SubItems.Add(file.FullName)[/CPP]

Het is namelijk een pad naar een bestand en niet een directory. ;)
 
het werkt al iets beter ik krijg nu alleen zodra die gaat kopieren de melding
Kan de bewerking niet voltooien omdat de map al bestaat in dit pad C:\Users\Gebruiker\Desktop.

Code:
Public Class album1

    Private Sub album1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ControlBox = False
        PictureBox2.Image = New Bitmap(Application.StartupPath + "\hoesjes\1.jpg")
        For Each file As IO.FileInfo In New IO.DirectoryInfo(Application.StartupPath + "\albums\1").GetFiles("*.mp3")
            Dim lvi As New ListViewItem
            lvi.Text = file.Name 'Alleen bestandsnaam als item tekst
            lvi.Tag = file.FullName 'Volledige pad opslaan in de Tag property. Elk item heeft zn eigen Tag
            lvi.SubItems.Add(file.FullName)
            ListView1.Items.Add(lvi)
        Next
    End Sub

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Albums.Show()
        Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
            My.Computer.FileSystem.CopyDirectory( 
            Application.StartupPath & "\albums\1",
            open.SelectedPath, _
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, _
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If
    End Sub

    Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label7.Click
        Pc_info.Show()
    End Sub

    Private Sub ListView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.Click
        AxWindowsMediaPlayer1.URL = ListView1.SelectedItems(0).Tag
        Label2.Text = ListView1.SelectedItems(0).Text
    End Sub
    Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
        Dim afsluiten As Integer
        afsluiten = MsgBox("wil je echt afsluiten?", vbDefaultButton2 + vbYesNo, "Waarschuwing")
        If afsluiten = vbYes Then
            End
        Else

        End If
    End Sub

    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
        Label10.Text = TrackBar1.Value

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
        Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
            My.Computer.FileSystem.CopyFile(
             ListView1.SelectedItems.Item(0).SubItems(1).Text,
            open.SelectedPath,
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If
    End Sub

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked = True Then
            AxWindowsMediaPlayer1.settings.mute = True
        Else
            AxWindowsMediaPlayer1.settings.mute = False
        End If
    End Sub
End Class
 
Kun je even de code aangeven waar je die fout krijgt?

Om een enkele MP3 te exporteren kun je beter dit doen:

[CPP]Dim save As New SaveFileDialog
save.Filter = "MP3 Bestanden (*.mp3)|*.mp3"
If save.ShowDialog = DialogResult.OK Then
Try
IO.File.Copy(ListView1.SelectedItems.Item(0).SubItems(1).Text, save.FileName)
Catch ex As Exception
MsgBox(ex.Message,16,"Fout")
End Try[/CPP]

Uit de losse pols geschreven, dus er kan een foutje in zitten.
 
Laatst bewerkt:
ik heb de code aangepast en krijg nu onder de Button2 (exporteer knop voor een song) de melding
"Kan de bewerking niet voltooien omdat de map al bestaat in dit pad C:\Users\Gebruiker\Desktop."

code

Code:
Public Class album1

    Private Sub album1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ControlBox = False
        PictureBox2.Image = New Bitmap(Application.StartupPath + "\hoesjes\1.jpg")
        For Each file As IO.FileInfo In New IO.DirectoryInfo(Application.StartupPath + "\albums\1").GetFiles("*.mp3")
            Dim lvi As New ListViewItem
            lvi.Text = file.Name 'Alleen bestandsnaam als item tekst
            lvi.Tag = file.FullName 'Volledige pad opslaan in de Tag property. Elk item heeft zn eigen Tag
            lvi.SubItems.Add(file.FullName)
            ListView1.Items.Add(lvi)
        Next
    End Sub

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Albums.Show()
        Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
            My.Computer.FileSystem.CopyDirectory( 
            Application.StartupPath & "\albums\1",
            open.SelectedPath, _
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, _
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If
    End Sub

    Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label7.Click
        Pc_info.Show()
    End Sub

    Private Sub ListView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.Click
        AxWindowsMediaPlayer1.URL = ListView1.SelectedItems(0).Tag
        Label2.Text = ListView1.SelectedItems(0).Text
    End Sub
    Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
        Dim afsluiten As Integer
        afsluiten = MsgBox("wil je echt afsluiten?", vbDefaultButton2 + vbYesNo, "Waarschuwing")
        If afsluiten = vbYes Then
            End
        Else

        End If
    End Sub

    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
        Label10.Text = TrackBar1.Value

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
        Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
           [COLOR="red"] My.Computer.FileSystem.CopyFile(
             ListView1.SelectedItems.Item(0).SubItems(1).Text,
            open.SelectedPath,
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)[/COLOR]
        End If
    End Sub

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked = True Then
            AxWindowsMediaPlayer1.settings.mute = True
        Else
            AxWindowsMediaPlayer1.settings.mute = False
        End If
    End Sub
End Class

fout zit in rode gedeelte en het zou een IOException was unhandled fout zijn
 
Dat komt omdat je een directory i.p.v. een file neemt (open.SelectedPath = een directory).

Kijk nog eens naar post #47. Daar staat de code die je moet hebben.
 
het werkt op dit moment naar behoren alleen nog klein punt. Kan ik het zo maken dat dat filename van het liedje automatisch word ingegeven als bestandsnaam met opslaan zodat ik alleen maar het pad moet kiezen? en kan er na het kopieren een dialoog venster komen met (voltooid)
 
ik zal ddaar eens naar kijken. Is het trouwens mogelijk om meerdere items gelijktijdig te kopieren als je meerdere items selecteert?

Ik heb overgens iets moeten veranderen namelijk
Code:
Dim save As New SaveFileDialog
save.Filter = "MP3 Bestanden (*.mp3)|*.mp3"
If save.ShowDialog = DialogResult.OK Then
Try
IO.File.Copy(ListView1.SelectedItems.Item(0).SubItems(1).Text, save.SelectedFile)
Catch ex As Exception
MsgBox(ex.Message,16,"Fout")
End Try

heb ik van gemaakt

Code:
Dim save As New SaveFileDialog
save.Filter = "MP3 Bestanden (*.mp3)|*.mp3"
If save.ShowDialog = DialogResult.OK Then
Try
IO.File.Copy(ListView1.SelectedItems.Item(0).SubItems(1).Text, save.[COLOR="red"]Filename[/COLOR])
Catch ex As Exception
MsgBox(ex.Message,16,"Fout")
End Try

want met SelectedFile kreeg ik een blauwe lijn onder de tekst
 
dannydaboy zei:
Is het trouwens mogelijk om meerdere items gelijktijdig te kopieren als je meerdere items selecteert?

Ja dat is mogelijk, dan moet je een map selecteren om het te exporteren. Maar dat is weer een hoop werk voor weinig functionaliteit.
Als ik jou was, zou ik een 'Lijst-Exporteren'-knop maken en een 'Nummer-Exporteren'-knop maken. (Zie voorbeeldproject voor Lijst-Exporteren-code)


Over dat save.Filename: daar heb je idd gelijk in. Ik had ook onderaan die post gezet: Uit de losse pols geschreven, dus er kan een foutje in zitten. :P
[edit] Inmiddels aangepast :)[/edit]
 
Laatst bewerkt:
ik heb eigenlijk al twee knoppen 1 knop dan exporteerd hij de gehele lijst (alle nummers in 1 directory) en een knop exporteerd 1 nummer.

De knop voor de hele lijst heb ik vermoedelijk niet correct geprogrameerd (hij werkt wel) maar hij kopieerd nu gewoon de directory. Het is volgens mij beter om hem eerst de hele lijst te selecteren en dan de selected items te exporteren.

er staat nu de code

Code:
Dim open As New FolderBrowserDialog
        If open.ShowDialog = DialogResult.OK Then
            My.Computer.FileSystem.CopyDirectory( 
            Application.StartupPath & "\albums\1",
            open.SelectedPath, _
            Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, _
            Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If

ik kan er volgens mij beter dezelfde code onderzetten als de 1 nummer exporteer knop maar dat hij dan eerst alle nummers selecteert en dan de geselecteerde nummers exporteert.

Of nog beter selectie vakjes voor de nummers zetten en dan selecteren wat je wilt en dat die die dan kopieert (met natuurlijk een check all functie.
 
Die code staat al in het voorbeeldproject.

Beter lezen:

JoZ1 zei:
Als ik jou was, zou ik een 'Lijst-Exporteren'-knop maken en een 'Nummer-Exporteren'-knop maken. (Zie voorbeeldproject voor Lijst-Exporteren-code)
 
code vervangen en werkt uitstekend

is er nog een manier om de totale tijd van alle items in de listview te tonen (in een tectbox of als label)en om de tijd van draaiend nummer te tonen?

Ik wil je echt bedanken voor je inzet want ik kan me voorstellen dat je gek van me word ;))
 
dannydaboy zei:
is er nog een manier om de totale tijd van alle items in de listview te tonen (in een tectbox of als label)en om de tijd van draaiend nummer te tonen?

Werkelijk geen idee. Ik ga even wat zoeken (en ik stel voor dat jij hetzelfde doet :P) en je hoort nog van me.

dannydaboy zei:
Ik wil je echt bedanken voor je inzet want ik kan me voorstellen dat je gek van me word )

Haha :) Graag gedaan. Ik ben wel erger gewend hoor :P
 
Ik heb eens gekeken voor de tijds aanduiding met het command

lvi.SubItems.Add(file.Length / 2630095)

Voeg die in me listview een nummer in en als ik hier mee ga rekenen dan kom ik tot het volgende

als ik het getoonde nummer deel door 2630095 kom ik op de minuut tijd (alleen nog niet netjes afgerond tot 2 decimalen)

dus ik denk dat ik hier wel de tijd van het nummer uit kan halen.

alleen moet ik kijken hoe ik deze informatie niet laat zien in me listview maar in een textlabel of textbox laad.

Hoe verberg je de kolom eigenlijk dat deze voor de gebruiker niet zichtbaar is (het gaat om de padnaam deze wil ik onzichtbaar hebben in me listview
 
'Length' is in programmeertermen niet de tijds aanduiding, maar de bestandsgrootte.

Als je de afspeelduur wilt weergeven zul je denk ik op zoek moeten gaan naar een externe bibliotheek die die functionaliteit heeft. Grote kans dat die bibliotheek ook allerlei mp3-tag informatie kan ophalen wat dus prima zou werken in jouw programma.

Zoiets als dit bijvoorbeeld: http://www.codeproject.com/KB/recipes/vbmp3header.aspx
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan