kostenloser Webspace werbefrei: lima-city


VB.net - Listbox Datenhinterlegung

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Hallihallo
    Ich habe 3 Listboxen, in denen Pfade von Dateien stehen.
    Ich möchte allerdings nicht den ganzen Pfad sehen, sondern jeweils nur den Namen. Das ist auch kein Problem, allerdings muss ich den Pfad irgendwo speichern, da die selectierte Datei beim Klicken auf die Listbox geöffnet werden soll.

    Das ganze läuft nach ungefähr dieses Schema:
    ***********
    listbox1
    (variable1)
    Drag & Drop innerhalb der listbox1

    *click* -> run programm (selectedIndex); Pfad = (variable1(selectedIndex))
    ***********

    ***********
    listbox2
    (variable2)
    Drag & Drop nach listbox1
    ***********

    ***********
    listbox3
    (variable3)
    Drag & Drop nach listbox1
    ***********

    Meine erste Idee war einfach die Pfade in einer variable in Form einer Liste zu speichern, wobei dann natürlich immer der zb 5. Index in der Listbox (name der Datei) zum 5. Index aus der Variable (Pfad der Datei) passt.

    Das Problem ist nur mit dem Drag & Drop, weil ich es nicht schaffe die variablen mitzuziehen.
    Ich habe leider garkeine Idee wie ich das lösen kann.
    zum Drag & Drop nutze ich volgendes:
    Private Sub frm_player_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Drag & Drop erlauben und events für listen zuweisen
            lst_playlist.AllowDrop = True
            lst_played.AllowDrop = False
            lst_files.AllowDrop = False
    
            AddHandler lst_playlist.MouseDown, AddressOf List_MouseDown
            AddHandler lst_playlist.DragOver, AddressOf List_DragOver
            AddHandler lst_playlist.DragDrop, AddressOf List_DragDrop
            AddHandler lst_playlist.DragLeave, AddressOf List_DragLeave
    
            AddHandler lst_played.MouseDown, AddressOf List_MouseDown
            AddHandler lst_played.DragOver, AddressOf List_DragOver
            AddHandler lst_played.DragDrop, AddressOf List_DragDrop
            AddHandler lst_played.DragLeave, AddressOf List_DragLeave
    
            AddHandler lst_files.MouseDown, AddressOf List_MouseDown
            AddHandler lst_files.DragOver, AddressOf List_DragOver
            AddHandler lst_files.DragDrop, AddressOf List_DragDrop
            AddHandler lst_files.DragLeave, AddressOf List_DragLeave
    
    end sub
    
    
    
      Private Sub List_MouseDown(ByVal sender As Object, _
          ByVal e As System.Windows.Forms.MouseEventArgs)
            ' Select the item at this point.
            Dim this_list As ListBox = DirectCast(sender, ListBox)
            this_list.SelectedIndex = this_list.IndexFromPoint(e.X, e.Y)
            If this_list.SelectedIndex < 0 Then Exit Sub
    
            m_DragSource = this_list
    
            this_list.DoDragDrop( _
                this_list.SelectedItem.ToString, _
                DragDropEffects.Move)
    
            m_DragSource = Nothing
        End Sub
    
        ' Highlight the item under the mouse.
        Private Sub List_DragOver(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.DragEventArgs)
            If m_DragSource Is Nothing Then Exit Sub
    
            e.Effect = DragDropEffects.Move
            Dim this_list As ListBox = DirectCast(sender, ListBox)
            Dim pt As Point = _
                this_list.PointToClient(New Point(e.X, e.Y))
            Dim drop_index As Integer = _
                this_list.IndexFromPoint(pt.X, pt.Y)
            this_list.SelectedIndex = drop_index
        End Sub
    
        Private Sub List_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim this_list As ListBox = DirectCast(sender, ListBox)
            this_list.SelectedIndex = -1
        End Sub
    
        ' Accept the drop.
        Private Sub List_DragDrop(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.DragEventArgs)
            Dim this_list As ListBox = DirectCast(sender, ListBox)
            MoveItem(e.Data.GetData(DataFormats.Text).ToString, _
                m_DragSource, this_list, e.X, e.Y)
        End Sub
    
        ' Move the value txt from drag_source to drop_target.
        Private Sub MoveItem(ByVal txt As String, ByVal drag_source As ListBox, _
         ByVal drop_target As ListBox, ByVal X As Integer, ByVal Y As Integer)
            Dim drop_index As Integer = drop_target.SelectedIndex
            If drop_index < 0 Then
                drop_index = drop_target.Items.Add(txt)
            Else
                drop_target.Items.Insert(drop_target.SelectedIndex, txt)
            End If
    
            drop_target.SelectedIndex = drop_index
    
            If drag_source Is drop_target Then
                Dim target_index As Integer = drag_source.FindStringExact(txt)
                If target_index = drop_index Then _
                    target_index = drag_source.FindStringExact(txt, target_index)
                drag_source.Items.RemoveAt(target_index)
            Else
                drag_source.Items.Remove(txt)
            End If
        End Sub


    Ich hoffe jemand von euch hat da eine Idee und kann mir weiterhelfen.
    Schonmal vielen Dank und Mit freundlichen Grüßen

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. s*************h

    Hallo programtools,

    ich habe eine Idee wie du das machen könntest.

    Lege eine Access-Datenbank und leg dort eine Tabelle an. In dieser legst du dann 2 Spalten an. Eine heißt DateiName die andere DateiPfad (nur als Beispiel). Nun kannst du in jeder Listbox die Einträge verschieben wie du willst.

    Wenn du jetzt auf einen Eintrag klickst dann muss das Programm in der Datenbank nachschauen wo der DateiName steht und kann dann in der gleichen Zeile den DateiPfad auslesen und öffnen.

    Hier noch ein Link zum Thema Datenbankprogrammierung:http://openbook.galileocomputing.de/einstieg_vb_2010/einstieg_vb_2010_kap_08_001.htm#mj89b49eca1cb29ad5cb88691c6b971208

    Das hört sich komplizierter an als es ist aber wenn du noch Fragen hast dann stell sie.

    Gruß S.Brosch

    Beitrag zuletzt geändert: 20.11.2010 10:35:03 von software-brosch
  4. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Ich muss gestehen, ich bin zu faul, um den gesamten Source-Code durchzuarbeiten, und auch nicht so der VB-Könner, aber ich würde so vorgehen, dass ich in einem Array die vollen Pfadnahmen vorhalten würde, und bei einem Klick, wenn vom gekürzten Namen der volle Pfad+Name gebraucht wird, diesen aus dem Array beziehen (in meiner "Muttersprache" Delphi würde ich kein Array nutzen, sondern eine TStringList, da dort das umsortieren von Einträgen wesentlich leichter von der Hand geht. Ich weiß allerdings nicht, ob's in VB was Adäquates dazu gibt, das sollte jedoch ein VB-Programmierer benennen können ...).
    Extra eine Datenbankanbindung dafür zu implementieren finde ich weder effizient, noch sinnvoll (eher das Gegenteil :D).
  5. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Vielen Dank erstmal euch zwei!
    Ich habe es so ungefähr gemacht wie software-brosch es gesagt hat
    Dim tracks_lstfiles As New List(Of String)

    Allerdings habe ich ja genau hier das Problem mit dem gleichhalten von listbox und dahinterstehender variable.

    An eine datenbank habe ich auch schon gedacht bzw datei oä, hat allerdings den Nachteil, dass die Datei "hallihallo.txt" sowohl im Ordner "C:\Users\User1\Desktop" als auch im Ordner "C:\Programme\Programm1\dateien" liegen kann.

    Ich gebe zu das ist nicht allzueinfach.
    Ich werde mein Glück mal versuchen und dann posten was draus geworden ist.
    Über weitere Ideen und Hilfestellungen würde ich mich natürlich nach wie vor sehr freuen!
    Gruß
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!