ListBox control

Status
Niet open voor verdere reacties.

TellMe

Gebruiker
Lid geworden
27 mei 2006
Berichten
43
Hoi mensen,

Hoe kan ik vanuit mijn Windows Explorer items in mijn Listbox slepen? (het gaat over Visual Basic 2005).
Het is dan ook de bedoeling dat die items opgeslagen worden in die listbox!

Mensen die me kunnen helpen ! u bent geweldig:-)
 
geroda zei:
verduidelijk eens je vraag ksnap er de ****** van


Hahaha nou ik heb het volgende,
Ik heb 'n Treeview en een Listview (of listbox licht eraan wat het beste is).
Nu is het de bedoeling dat de treeview gekoppeld staat aan de listbox of listview.

Je moet uiteindelijk vanuit een Windows Explorer MP3's en WAV's in de listbox of listview kunnen slepen.
 
m.a.w

je wil een MP3/WAV speler maken met rechts de liedjes die je wil afspelen en als je er bv een liedje insleept dat hij tussen die lijst komt te staan en zo in de afspeellijst afspeelt?
 
geroda zei:
m.a.w

je wil een MP3/WAV speler maken met rechts de liedjes die je wil afspelen en als je er bv een liedje insleept dat hij tussen die lijst komt te staan en zo in de afspeellijst afspeelt?

ja precies.
Je hebt dus 'n lijst met al je muziek waaruit je kan kiezen.
en 'n playlist.
dus uiteindelijk moet er ook vanuit die keuzelijst in een playlist geslepen worden.
 
WalterWzK zei:
Dit is vrij eenvoudig.. je kan de property "DragDrop" activeren in je listbox waardoor hij items zal accepteren die gesleept worden.. vervolgens kan je door het Drop-object aan te roepen kunnen uitlezen wat er nou eigenlijk in je listbox is gesleept ( bv het volle pad naar de mp3 toe ). Het is dan aan jouw de taak om dit item met AddItem aan je lijst toe te voegen.. als je handig bent sla je het volle pad op als item-key en enkel de naam van het nummer ( uitlezen uit ID3-Tag ) als item-tekst.. als men dan dubbelklikt op een nummer om af te spelen dan kan je gewoon je media-component voorzien van het volle pad naar de MP3 door de key van het selected item uit te lezen. Succes!

Hmzzz dit gaat nog iets te snel voor me.
Kun je wat specefieker zijn?

thnx!
 
WalterWzK zei:
Ik heb zo snel geen VB2005 tot mijn beschikking dus ik kan niet exact vertellen waar alles zit. Maar dit is het idee in stappen:
( Je ziet dat ik de Drag&Drop property oversla ( dit moest in VB6 )

1. Je plaatst een listbox op een form
2. Je maakt het event DragEnter aan om te checken of het gedropte item iets is!

Code:
Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
Handles ListBox1.DragEnter
If e.Data.GetDataPresent(GetType(System.String)) = True Then
e.Effect = DragDropEffects.Copy
End If
End Sub

3. Je maakt het event DragDrop aan voor het geval dat het gedropte item inderdaad bruikbaar blijkt.

Code:
Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
Handles ListBox1.DragDrop
Msgbox CStr(e.Data.GetData(GetType(System.String)))
End Sub

4. Je draait je applicatie en sleept een MP3 uit een map in je Listbox

Je zal zien dat je het volledige pad naar de MP3 in een messagebox te zien krijgt,
wat we nu dus hebben is een listbox die bekijkt of het item dat je erin wilt droppen geldig is, en als dat zo is, dan zal hij het volledige pad naar het item weergeven.

Nu gaan we nog een stapje verder :)
We willen het item niet in een messagebox, dat mag duidelijk zijn.
We moeten dus het item gaan toevoegen aan de listbox, en wel op een slimme manier zodat we in de toekomst gemakkelijk met deze items kunnen omspringen.
Als je een item aan een listbox toevoegd kan je een aantal eigenschappen invullen, de meest belangrijke is de naam natuurlijk. Maar een in dit geval handige eigenschap is de Key, dit is een string die voor elk item uniek moet zijn en verder geen nut heeft dan identificatie!

Als we nou bij het aanmaken van het item in de listbox het volledigepad ( nu in msgbox ) plaatsen in de key dan kunnen we later makkelijk ophalen waar het bestand ook alweer stond. Zou je namelijk het hele pad als naam gebruiken dan moet je listbox zo breed zijn!
Wat je als naam gebruikt mag je zelf weten, je zou met een functie de naam van het bestand uit het volle pad kunnen halen en die gebruiken.

Stel nou iemand klikt dubbel op een listbox item, dan kan je met SelectedItem(0).Key bijvoorbeeld een WindowsMediaPlayer een volledig pad geven om het bestand af te spelen.

Hoop dat je hier meer aan hebt, succes!

Zeker zeker! maar het woord Handles is 'n Syntax Error:S...
 
WalterWzK zei:
Handels moet direct na de () achter de procedure komen hé?
In VB.Net specificeer je met Handle door welk control de functie aangeroepen wordt..
wellicht dat dit inmiddels in nieuwere\oudere versies veranderd is. Even mee stoeien dus! succes
Oké... de bug is nu verholpen maar d'r gebeurt nix als ik de applicatie start!
dit is nu de code:

Code:
    Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop
        MsgBox(CStr(e.Data.GetData(GetType(System.String))))
    End Sub

    Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)Handles ListBox1.DragEnter
        If e.Data.GetDataPresent(GetType(System.String)) = True Then
            e.Effect = DragDropEffects.Copy
        End If
    End Sub
 
WalterWzK zei:
Tjah zoals ik al zei heb ik even geen VB2005 tot mn beschikking, dus kan even niet debuggen voor je.. maar het zal hem wel weer in de kleine dingen zitten.

idd:S
Bugs heb ik niet maar hij doet gewoon nouja, tja, ehh, NIKS! Vaag

IN IEDER GEVAL THNX!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan