Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Listview e drag drop
venerdì 10 giugno 2005 - 15.39
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lordwaizard
Profilo
| Senior Member
294
messaggi | Data Invio:
ven 10 giu 2005 - 15:39
Ho una listview con dentro una serie di item.
Ora quello che non riesco a realizzare è il drag drop nella stessa listview per spostare le righe.
ES
Mario
Davide
Matteo
L'utente deve riuscire a spostare "con stile" drag drog la seconda riga (Davide) al posto della prima (Mario) oppure viceversa.
Potete aiutarmi?
Grazie a tutti
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 10 giu 2005 - 16:01
Ciao Lord,
non so, ma non mi pare che queste funzionalità sia supportata dalla ListView in dotazione con Visual Studio.
Ho visto alcune listview che avevano questa funzionalità ma non di Microsoft.
Per fare operazioni di questo tipo devi creare una versione derivata e personalizzare il comportamento.
Quello che ti consiglio, forse risolvi prima, è di fare sulla destra della listview due pulsanti (sopra e sotto) e alla pressione sposti l'elemento selezionato più in su o più in giù. Capisco che magari non è ciò che cerchi e dal punto di vista dell'usabilità lascia un po' a desiderare.
ciao
david
lordwaizard
Profilo
| Senior Member
294
messaggi | Data Invio:
ven 10 giu 2005 - 18:14
Per caso conosci qualche sito di listview anche non ms?
Cmq forse ho una mezza soluzione ma non so convertirla:
Public Sub LVDragDropSingle(ByRef lvList As ListView, ByVal x As Single,
ByVal y As Single)
Dim objDrag As ListItem
Dim objDrop As ListItem
Dim objNew As ListItem
Dim objSub As ListSubItem
Dim intIndex As Integer
'Retrieve the original items
Set objDrop = lvList.HitTest(x, y)
Set objDrag = lvList.SelectedItem
If (objDrop Is Nothing) Or (objDrag Is Nothing) Then
Set lvList.DropHighlight = Nothing
Set objDrop = Nothing
Set objDrag = Nothing
Exit Sub
End If
'Retrieve the drop position
intIndex = objDrop.Index
'Remove the dragged item
lvList.ListItems.Remove objDrag.Index
'Add it back into the dropped position
Set objNew = lvList.ListItems.Add(intIndex, objDrag.Key, objDrag.Text,
objDrag.Icon, objDrag.SmallIcon)
'Copy the original subitems to the new item
If objDrag.ListSubItems.Count > 0 Then
For Each objSub In objDrag.ListSubItems
objNew.ListSubItems.Add objSub.Index, objSub.Key, objSub.Text,
objSub.ReportIcon, objSub.ToolTipText
Next
End If
'Reselect the item
objNew.Selected = True
'Destroy all objects
Set objNew = Nothing
Set objDrag = Nothing
Set objDrop = Nothing
Set lvList.DropHighlight = Nothing
End Sub
Poi nelle proprietà della listview seleziono
AUTOMATIC per OLEDragMode
MANUAL per OLEDropMode
Poi scrivo il codice per la listview
Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As
Long, Button As Integer, Shift As Integer, x As Single, y As Single)
Call LVDragDropSingle(ListView1, x, y)
End Sub
Private Sub ListView1_OLEDragOver(Data As MSComctlLib.DataObject, Effect As
Long, Button As Integer, Shift As Integer, x As Single, y As Single, State
As Integer)
Set ListView1.DropHighlight = ListView1.HitTest(x, y)
End Sub
Ringrazio tutti per l'aiuto
Davide
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !