ListBox und Drag Funktion?!?

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von ag.

    ListBox und Drag Funktion?!?

    Hi,

    ich hoffe mal wieder auf Hilfe von hier.

    ich habe eine ListBox in der die Dateien eines ausgewählten Verzeichnisses aufgelistet werden.
    Wie ist nun die Vorgehensweise, wenn ich diese Dateien per Drag auf eine andere geöffnete Anwendung ziehen will? Die geöffnete Anwendung ist in der Lage die Files per Drop zu übernehmen.
    Wie macht man das?

    Viele Grüße
    André

    Formuliere meine Frage anders

    Hi,

    ok, da keiner ne Antwort hat, formuliere ich meine Frage anders:

    Ich will aus einem ListView, oder ListText, oder TreeView, oder was man dafür nehmen muss, in dem ich Dateien anzeigen lasse, die anezeigten Dateien per Drag And Drop auf eine andere Anwendung ziehen.

    Die Files sollen nach dem Drop aus dem Quellverzeichnis gelöscht werden.

    Ich habe nun 2 Fragen:

    1. Welche Komponente wähle ich am besten um die Dateien anzeigen zu lassen?
    2. Hat jemand einen bsp.-Code für mich, wie man das Drag And Drop realisiert?

    Ich wäre echt für Hilfe dankbar, da ich (egal wie ich es bisher angefasst habe) es nicht hinbekommen habe.

    Viele Grüße
    André
    Hi Mad Andy,

    danke für die Antwort.

    1. Dann mach ich das schon mal richtig... :D
    2. Wow... is für'n Anfänger aber vielleicht ein Wenig zu viel Information auf einmal... also ich bekomm da schnell Gehirnwindungsprobleme... :rolleyes:
    Nicht, das ich die interne Hilfe von VB schlecht finde, nein, für einen etwas geübten ist das echt toll, nur wenn man ganz am Anfang steht, ist das halt doch ein Wenig viel... oder?!? 8o

    Also mein Problem ist, dass ich Drag And Drop Bsp. für ListBox'en, PictureBox'en usw. habe, aber keines für ListView... wenn ich dann versuche die mir bekannten Bsp.'s auf das ListView umzubauen, kommt immer wieder der Punkt, wo sich die einzelnen Komponenten dann doch ganz schnell unterscheiden... was die Methoden anbelangt... und selbst wenn ein Anfänger wie ich dann in der MSDN ein Bsp. findet, funzt das meist nicht, weil irgendeine Methodenaufruf, oder Deklaration so nicht geht... und irgendwann Blickt man es halt gar nichts mehr... ;(

    Aber vielleicht hat ja jemand noch ein Bsp. für mich... :))
    Solange werd ich weiter MSDN und F1 und Kochbücher und Handbücher und NewsGroups und Foren und Arbeitskolegen und Freunde und und.... :P

    Viele Grüße
    André

    Ein bischen weiter

    Hi,

    jetzt bin ich schon ein bischen weiter.
    Da plagt mich aber noch eine und mehr Fragen.
    Wie muss man es anstellen, dass ein Programm (z.B. der Explorer) die Files entgegen nimmt.
    Bis jetzt zeigt jedes "externe" Programm immer noch an, dass es die Files, die auf es ziehe, nicht "haben" will. ?(
    Also, der "Verbotskreis" geht nicht weg... ich hoffe, man versteht was ich damit meine.

    Viele Grüße
    André
    So mache ich das unter VB6. Vielleicht hilft es dir.

    VB.NET-Quellcode

    1. Private Sub lvSuche_OLEStartDrag(Data As MSComctlLib.DataObject, AllowedEffects As Long)
    2. Dim i As Integer
    3. Dim DateiName As String
    4. Dim LngIndx As Long
    5. LngIndx = CLng(lvSuche.SelectedItem.SubItems(2))
    6. DateiName = lvInhalt.ListItems(LngIndx).Text
    7. Data.Clear
    8. Data.Files.Add DateiName
    9. Data.SetData , vbCFFiles
    10. End Sub
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    Verzweiflung

    Hi Peterfido,

    vielen Dank für deine Antwort.

    Ich bräuchte (ja, ich weiß, ich bin wählerisch... 8) ) .Net Code... :))
    Was mich aber jetzt langsam an den Rand der Verzweiflung treibt ist, dass es massig Code, Bsp. und Dokus zum ziehen, per Drag and drop, von files AUS dem Win-Explorer :evil: , in eine eigene Anwendung... ABER NIE ?( von der eigenen Anwendung in den Win-Explorer....

    Ich vermute, dass dies nur über die Zwischenablage geht... aber ... bääähhhhh... ich kriegs nicht hin... :evil:

    Da muss es doch MS oder sonst wo ne Beschreibung dafür geben?!? ?(

    Wenn ich die Files auf die Taskleiste zieh, bekomme ich immerhin eine Meldung, dass man die Daten dort nicht ablegen kann... aber der Explorer "schweigt", bzw. zeigt beharlich das "Verbotszeichen"... 8o

    ... na ja... ich hoffe noch...

    Viele Grüße
    André

    Zuversicht...

    Hi Mad Andy,

    hier der letzte Stand des Codes:

    Quellcode

    1. Private Sub ListView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseDown
    2. Dim Files As DataObject = New DataObject()
    3. Dim selectedItems As ListView.SelectedListViewItemCollection = ListView1.SelectedItems
    4. For i As Integer = 0 To selectedItems.Count - 1
    5. Files.SetData(selectedItems)
    6. Clipboard.SetDataObject(Files)
    7. Next i
    8. ListView1.DoDragDrop(ListView1.SelectedItems, DragDropEffects.Move)
    9. End Sub


    Es gab natürlich unzählige Zwischenstände, mit DragEnter Funktion und ohne... alle krieg ich nimmer hin... wenn Dir es aber nach mehr gelüstet, lass es mich wissen... :))

    Viele Grüße
    André
    Hi...!

    Ich habs!

    Das Ganze muss so gehalten sein:

    Quellcode

    1. Private Sub ListView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseDown
    2. Dim files As String() = New String(0) {}
    3. files(0) = ListView1.SelectedItems.ToString()
    4. Dim data As New DataObject(DataFormats.FileDrop, files)
    5. data.SetData(DataFormats.StringFormat, ListView1.SelectedItems.ToString())
    6. DoDragDrop(data, DragDropEffects.Move)
    7. End Sub


    Jetzt bekomme ich zwar noch die Fehlermeldung:
    "Die Quelldatei oder vom Quelldatenträger kann nicht gelesen werden."

    Aber das bekomme wir auch noch hin.

    Hat jemand eine Idee zu dieser Meldung?!?

    Viele Grüße
    André

    Heureka die Zweite!

    Hi,

    so hier nun der absolut funktionierende Code:

    Quellcode

    1. Dim files As New List(Of String)
    2. For Each Item As ListViewItem In ListView1.SelectedItems
    3. files.Add(APfad + "\" + Item.Text)
    4. Next
    5. If files.Count = 0 Then Return
    6. Dim data As New DataObject(DataFormats.FileDrop, files.ToArray)
    7. Call DoDragDrop(data, DragDropEffects.Copy)


    APfad muss mit dem aktuell gültigen Pfad belegt sein.

    Vielen Dank an Jörg Meier von der Uni-Weimar, ohne Ihn hätte ich das nie hinbekommen.
    Danke Jörg!

    Viele Grüße an alle
    André

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ag“ ()