Einträge aus der Einen in die andere Listview

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von DosiSoft.

    Einträge aus der Einen in die andere Listview

    Hallo,
    wie kann man die selektierten Einträge von der Einen in die andere Listview verschieben?
    Ich hatte schon folgendes ausprobiert:

    Listview1_DoubleClick Event

    VB.NET-Quellcode

    1. With lbNextSongs.Items
    2. SubItem = .Add(oInfo.Titel)
    3. SubItem.SubItems.Add(oInfo.Interpret)
    4. SubItem.SubItems.Add(oInfo.Album)
    5. End With

    (auch wenn der Präfix lb ist, ist es eine Listview)

    Es klappt i-wie nicht.

    Was ist daran falsch?
    der Gesamte Code der Form:

    VB.NET-Quellcode

    1. Public Class btEntfernen
    2. ' API-Deklaration
    3. Private Declare Auto Function mciSendString Lib "winmm.dll" ( _
    4. ByVal lpstrCommand As String, _
    5. ByVal lpstrReturnString As String, _
    6. ByVal uReturnLength As Integer, _
    7. ByVal hwndCallback As Integer) As Integer
    8. Public Declare Function GetShortPathName Lib "kernel32" _
    9. Alias "GetShortPathNameA" ( _
    10. ByVal lpszLongPath As String, _
    11. ByVal lpszShortPath As String, _
    12. ByVal cchBuffer As Long) As Long
    13. 'Dim selectedFile As String = String.Empty
    14. Dim Liste As New System.Collections.Specialized.StringCollection
    15. Dim Stunde As String
    16. Dim Minute As String
    17. Dim Sekunden As String
    18. Dim Tage As String
    19. Dim Monat As String
    20. Dim Jahr As String
    21. Dim sBuffer As String = sBuffer * 255
    22. Dim sType As String
    23. Dim nResult As Long
    24. Dim sExt As String
    25. Dim bVideo As Boolean
    26. ' Daten-Struktur der MP3-Informationen
    27. Private Structure MP3Info
    28. Dim Titel As String
    29. Dim Interpret As String
    30. Dim Album As String
    31. Dim Jahr As String
    32. Dim Kommentar As String
    33. Dim Genre As String
    34. End Structure
    35. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    36. tmrDatumUhrzeit.Start()
    37. 'For Each Eintrag In Liste
    38. ' ListBox1.Items.Add(Eintrag)
    39. 'Next
    40. 'Liste = My.Settings.Datenbank
    41. End Sub
    42. Private Sub btAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAdd.Click
    43. If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    44. 'selectedFile = OpenFileDialog1.FileName
    45. For Each Items In OpenFileDialog1.FileNames
    46. ShowMP3Infos(OpenFileDialog1.FileName)
    47. Next
    48. 'For Each Eintrag In ListBox1.Items
    49. ' Liste.Add(Eintrag)
    50. 'Next
    51. 'My.Settings.Datenbank = Liste
    52. End If
    53. 'OpenFileDialog1.ShowDialog()
    54. 'Dim Items As String
    55. 'For Each Songs In OpenFileDialog1.FileNames
    56. ' lbDB.Items.Add(Songs)
    57. 'Next
    58. End Sub
    59. Private Sub pbStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbStop.Click
    60. End Sub
    61. Private Sub pbPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbPlay.Click
    62. mciSendString("open """ & lbNextSongs.SelectedItems.ToString & """ alias Lied", Nothing, 0, 0)
    63. mciSendString("play Lied", Nothing, 0, 0)
    64. tmrStatus.Start()
    65. tmrUpMin.Start()
    66. tmrUpSec.Start()
    67. End Sub
    68. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    69. End
    70. End Sub
    71. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btRandomPlaylist.Click
    72. RandomPlaylist.Show()
    73. End Sub
    74. Private Sub TempToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TempToolStripMenuItem.Click
    75. End Sub
    76. Private Sub tmrDatumUhrzeit_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrDatumUhrzeit.Tick
    77. 'If Now.Hour < 10 Then
    78. ' Stunde = "0" & Now.Hour
    79. 'End If
    80. 'If Now.Minute < 10 Then
    81. ' Minute = "0" & Now.Minute
    82. 'End If
    83. 'If Now.Second < 10 Then
    84. ' Sekunden = "0" & Now.Second
    85. 'End If
    86. 'If Now.Day < 10 Then
    87. ' Tage = "0" & Now.Day
    88. 'End If
    89. 'If Now.Month < 10 Then
    90. ' Monat = "0" & Now.Month
    91. 'End If
    92. TempToolStripMenuItem.Text = Now.Hour & ":" & Now.Minute & ":" & Now.Second & "Uhr" & " | " & Now.Day & "." & Now.Month & "." & Now.Year
    93. End Sub
    94. Private Sub tmrStatus_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrStatus.Tick
    95. Dim lol As String = GetMP3Length(lbNextSongs.SelectedItems.ToString)
    96. Dim ms As Integer = lol
    97. Dim ts As New TimeSpan(0, 0, 0, 0, ms)
    98. Dim Sec As String = ts.Seconds
    99. Dim Min As String = ts.Minutes
    100. Dim Stun As String = ts.Hours
    101. Label1.Text = Min & ":" & Sec
    102. End Sub
    103. ' Millisekunden nach mm:ss umrechnen
    104. Public Function FormatMilliSeconds(ByVal Milliseconds As Integer, _
    105. Optional ByVal sFormat As String = "mm:ss") As String
    106. Return CDate("00:00:00").AddMilliseconds(Milliseconds).ToString(sFormat)
    107. End Function
    108. Public Function GetMP3Length(ByVal FileName As String) As Integer
    109. ' MP3-Datei öffnen
    110. mciSendString("open " & Chr(34) & lbNextSongs.SelectedItems.ToString & Chr(34) & _
    111. " type MPEGVideo alias mp3audio", 0, 0, 0)
    112. ' Länge der Datei in Millisekunden auslesen
    113. Dim sReturn As String = Strings.Space(256)
    114. Dim lRet As Integer = mciSendString("status mp3audio length", _
    115. sReturn, sReturn.Length, 0&)
    116. ' MP3-Datei schliessen
    117. mciSendString("close mp3audio", 0, 0, 0)
    118. Return Val(sReturn)
    119. End Function
    120. Private Sub tmrUpSec_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrUpSec.Tick
    121. Label4.Text = Label4.Text + 1
    122. If Label4.Text >= 60 Then
    123. Label4.Text = 0
    124. End If
    125. End Sub
    126. Private Sub tmrUpMin_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrUpMin.Tick
    127. Label2.Text = Label2.Text + 1
    128. End Sub
    129. Private Sub lbDB_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbDB.DoubleClick
    130. End Sub
    131. ''' <summary>
    132. ''' Liest den ID3V1-Tag einer MP3-Datei aus
    133. ''' </summary>
    134. ''' <param name="sFile">MP3-Dateiname</param>
    135. ''' <returns>Struktur mit den MP3-Informationen</returns>
    136. Private Function ReadMP3Info(ByVal sFile As String) As MP3Info
    137. Dim oInfo As New MP3Info
    138. ' Prüfen, ob Datei auch existiert
    139. If System.IO.File.Exists(sFile) Then
    140. Try
    141. Dim oStream As New System.IO.FileStream(sFile, IO.FileMode.Open)
    142. ' Position des MP3-Tags
    143. oStream.Seek(-128, IO.SeekOrigin.End)
    144. ' jetzt 128 Bytes lesen
    145. Dim bData(127) As Byte
    146. oStream.Read(bData, 0, 128)
    147. ' Byte in String umwandeln
    148. Dim sData As String = System.Text.Encoding.Default.GetString(bData)
    149. ' Prüfen, ob Daten mit TAG beginnen
    150. If sData.Substring(0, 3) = "TAG" Then
    151. With oInfo
    152. ' jetzt die Struktur mit den Infos füllen
    153. .Titel = StripNull(sData.Substring(3, 30))
    154. .Interpret = StripNull(sData.Substring(33, 30))
    155. .Album = StripNull(sData.Substring(63, 30))
    156. .Jahr = StripNull(sData.Substring(93, 4))
    157. .Kommentar = StripNull(sData.Substring(97, 30))
    158. .Genre = StripNull(sData.Substring(127, 1))
    159. End With
    160. End If
    161. oStream.Close()
    162. Catch ex As Exception
    163. End Try
    164. End If
    165. ' Rückgabewert: MP3Info
    166. Return (oInfo)
    167. End Function
    168. ' Sucht nach dem ersten Null-Zeichen und gibt den linken Teil
    169. ' des Strings zurück
    170. Private Function StripNull(ByVal sData As String) As String
    171. Dim nPos As Integer = sData.IndexOf(Chr(0))
    172. If nPos >= 0 Then
    173. Return sData.Substring(0, nPos).TrimEnd
    174. Else
    175. Return sData.TrimEnd
    176. End If
    177. End Function
    178. ' MP3-Info lesen und anzeigen
    179. Private Sub ShowMP3Infos(ByVal sFile As String)
    180. Dim oInfo As MP3Info = ReadMP3Info(sFile)
    181. Dim SubItem As ListViewItem
    182. With lbDB.Items
    183. With lbDB.Items
    184. SubItem = .Add(oInfo.Titel)
    185. SubItem.SubItems.Add(oInfo.Interpret)
    186. SubItem.SubItems.Add(oInfo.Album)
    187. End With
    188. '.Clear()
    189. '.Add(oInfo.Titel)
    190. '.Add(oInfo.Interpret)
    191. '.Add(oInfo.Album)
    192. '.Add(oInfo.Jahr)
    193. '.Add(oInfo.Kommentar)
    194. '.Add(oInfo.Genre)
    195. End With
    196. End Sub
    197. End Class


    Gruß
    Hey,

    probier mal das hier:

    VB.NET-Quellcode

    1. Private Sub WriteSelected()
    2. For Each p In lbNextSongs.Items.OfType(Of ListViewItem).Where(Function(d) d.Selected())
    3. Dim Sel As New ListViewItem
    4. Sel.Text = p.Text
    5. Sel.SubItems.Add(p.SubItems(1).Text)
    6. Sel.SubItems.Add(p.SubItems(2).Text)
    7. ListView2.Items.Add(Sel)
    8. Next
    9. End Sub