Salve a tutti...
Devo implementare il Drag&Drop da un DataGridView con il Multiselect impostato a True verso un TreeView. Il codice che ho scritto funziona, ha solo un problema, se ci sono più righe selezionate nel DataGridView mi applica il Drag&Drop solo alla riga da cui parte il trascinamento perchè nel momento in cui clicco sul DataGridView per iniziare il Drag la selezione cambia, si deselezionano tutte le righe e rimane selezionata solo quella su cui è avvenuto il Click..
Come posso risolvere????
Codice:
codice:
Private Sub GridDoc_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles GridDoc.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left And GridDoc.SelectedRows.Count > 0 Then
GridDoc.DoDragDrop(GridDoc.SelectedRows, DragDropEffects.Copy)
End If
End Sub
Private Sub Tree_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Tree.DragOver
e.Effect = DragDropEffects.Copy
Dim pt As Point = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
nodoDrop = Tree.GetNodeAt(pt)
Tree.SelectedNode = nodoDrop
If nodoDrop.Level = 0 Then
e.Effect = DragDropEffects.None
ElseIf nodoDrop.ImageIndex <> 0 Then
e.Effect = DragDropEffects.None
Else
e.Effect = DragDropEffects.Copy
End If
s = e.Data.GetData(System.Windows.Forms.DataFormats.StringFormat)
MsgBox(s)
End Sub
Private Sub Tree_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Tree.DragDrop
s = e.Data.GetData(System.Windows.Forms.DataFormats.StringFormat)
MsgBox(s)
Dim risp As MsgBoxResult
risp = MsgBox("Archiviare i documenti selezionati in """ & nodoDrop.Text & """?", MsgBoxStyle.YesNo + MsgBoxStyle.Question)
If risp = MsgBoxResult.Yes Then
Archivia()
End If
End Sub
Sub Archivia()
caricaCampi = False
Me.Cursor = Cursors.WaitCursor
Dim doc As New clsDOC()
doc.nodo = Tree.SelectedNode.Name
Dim where As String = ""
numVis -= GridDoc.SelectedRows.Count
For Each drv In GridDoc.SelectedRows
where += "IDDOC=" & drv.Cells(0).Value & " OR "
filtro += " IDDOC<>" & drv.Cells(0).Value & " AND "
Next
where = where.Remove(where.Length - 4, 4)
doc.setArchivio(where)
filtro = filtro.Remove(filtro.Length - 5, 5)
dsDOC.Tables(0).DefaultView.RowFilter = filtro
GridDoc.DataSource = dsDOC.Tables(0).DefaultView
TestoColonneDOC()
caricaCampi = True
BoxDoc.Text = "Documenti [Risultato della Ricerca: " & numVis & " Documenti]"
Me.Cursor = Cursors.Default
End Sub
Grazie mille in anticipo.....