vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Drag Drop Zeilen von Datagridview in Datagridview 
Autor: Dideldum
Datum: 26.03.23 23:30

Hi Ihr,

jetzt plage ich mich schon wieder mit einem Problem.

Ich habe meine DGV_Folders, in welcher Verzeichnisse gelistet sind und eine DGV_Files, in welcher die Dateien des jeweils selektierten DGV-Folder-Verzeichnisses ausgegeben werden.

Nun ist ja in der DGV-Folders logischerweise das aktuelle Verzeichnis selektiert, wenn ich aus der DGV-Files Dateien markiere und in die DGV-Folders auf einen anderen Ordner ziehe.

Nur...
Wie bekomme ich beim Ziehen/Ablegen den Ziel-Ordnernamen der DGV-Folders, also die nicht selektierte DGV-Folders.row, über der ich die Maustaste loslasse?

Habe mir das einfach vorgestellt...

    Private Sub dgv_Folders_DragDrop(sender As Object, e As DragEventArgs) _
      Handles dgv_Folders.DragDrop
        If e.Data.GetDataPresent(DataFormats.FileDrop, True) = True Then
 
            Files_Kopieren()
 
            Dim DGRow As DataGridViewRow = e.Data.GetData(GetType( _
              DataGridViewRow)) ' Falsch!!!
 
            MsgBox(dgv_Folders.Rows(DGRow.Index).Cells(0).Value) ' Ergibt 
            ' Null-Value - Fehler
 
            If DGRow.Index > -1 Then
                AuswählenOrdner("", DGRow.Index)
                ausschneidenFlag = True ' Löscht nach dem erfolgreichen 
                ' Einfügen die Quelldateien
                Files_Einfügen()
            End if
 
        end if
    end sub
Das klappt aber nicht.

DGV_Folder_CellMouseEnter wird unterm Drag/Drop nicht ausgeführt.
Darin hätte ich ja die e.RowIndex auslesen können.

Wie erhalte ich also im DragDrop die DGV_Folders.Row unter der Maus, also das nicht selektierte Zielverzeichnis, um meine gedragten Dateien da rein zu droppen?

Habe keine Idee mehr dazu.

Beste Grüsse
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Drag Drop Zeilen von Datagridview in Datagridview 
Autor: Dideldum
Datum: 02.04.23 22:31

Hab's hinbekommen:

für das Treeview trv_Folders (Eigenschaft des Controls "AllowDrop" auf true setzen):

    Private Sub trv_Folders_DragEnter(sender As Object, e As DragEventArgs) _
      Handles trv_Folders.DragEnter
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
            'There Is File - Allow copy.
            e.Effect = DragDropEffects.Copy
        Else
            'There Is no file - Prohibit drop.
            e.Effect = DragDropEffects.None
        End If
    End Sub
 
    Private Sub trv_Folders_DragDrop(sender As Object, e As DragEventArgs) _
      Handles trv_Folders.DragDrop
        If e.Data.GetDataPresent(DataFormats.FileDrop, True) = True Then
 
            Dim p As Point = trv_Folders.PointToClient(New Point(e.X, e.Y)) ' 
            ' so klappt es
            Dim dragIndex As TreeNode = trv_Folders.HitTest(p.X, p.Y).Node
 
            If dragIndex IsNot Nothing Then
                objekteEntladen()
                Objekt_Kopieren()
                trv_Folders.SelectedNode = dragIndex
                ordnerPfad = trv_Folders.SelectedNode.FullPath
                auswahl_Ordner(ordnerPfad, My.Settings.Programm_Expertenansicht)
                ausschneidenFlag = True ' Löscht nach dem erfolgreichen 
                ' Einfügen die Quelldateien
                Objekt_Einfügen()
            End If
        End If
    End Sub
Und für das Datagrid dgv_Folders (Eigenschaft des Controls "AllowDrop" auf true setzen):

    Private Sub dgv_Folders_DragEnter(sender As Object, e As DragEventArgs) _
      Handles dgv_Folders.DragEnter
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
            e.Effect = DragDropEffects.Copy
        Else
            e.Effect = DragDropEffects.None
        End If
    End Sub
 
    Private Sub dgv_Folders_DragDrop(sender As Object, e As DragEventArgs) _
      Handles dgv_Folders.DragDrop
 
        If e.Data.GetDataPresent(DataFormats.FileDrop, True) = True Then
 
            Dim p As Point = dgv_Folders.PointToClient(New Point(e.X, e.Y)) ' 
            ' So klappt es
            Dim dragIndex = dgv_Folders.HitTest(p.X, p.Y).RowIndex
 
            If dragIndex - 1 Then
                objekteEntladen()
                Objekt_Kopieren()
                ordnerPfad = IO.Path.Combine(aktivesArchivPfad, _
                  dgv_Folders.Rows(dragIndex).Cells(0).Value)
                auswahl_Ordner(ordnerPfad, My.Settings.Programm_Expertenansicht)
                ausschneidenFlag = True ' Löscht nach dem erfolgreichen 
                ' Einfügen die Quelldateien
                Objekt_Einfügen()
            End If
        End If
    End Sub
Aber was stimmt mit dem folgenden Code nicht?

Dim dragIndex As TreeNode = trv_Folders.GetNodeAt(e.X, e.Y)
Im Mouseclick funktioniert der Code, aber nicht im DragDrop, obwohl ich hier auch die e.X und e.Y-Koordinaten bekomme.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel