C5. Drag and Drop
Con il termine "Drag and Drop" si indica una tecnica visuale che permette di trascinare dati da un controllo su un altro controllo con
il solo ausilio del mouse. È assai utile poichè permette all'utente di ottenere il massimo grado di interazione con il programma con il
minimo sforzo. Per far sì che un controllo possa recepire dati spostati mediante Drag and Drop, la sua proprietà AllowDrop deve essere
impostata a True. L'operazione di trascinamento inizia quando viene premuto il pulsante sinistro del mouse sul controllo, perciò nell'evento
MouseDown. Si crei ad esempio un form con due textbox vuote, e AllowDrop di una su True:
Ora che si possono iniziare operazioni di Drag&Drop, non è tuttavia portarle a termine: manca infatti il codice che gestisce il meccanismo sul controllo ricevente. Per prima cosa bisogna controllare in entrata, che ci siano dati e, in questo caso, che siano coerenti con il contenuto del controllo. Per far questo si utilizza l'evento DragEnter, che notifica quando il mouse entra nell'area specificata.
DoDragDrop è un metodo appartenente alla classe Control e perciò viene ereditato da tutti i controlli. Il primo parametro è costituito dall'insieme dei dati da passare nell'operazione, mentre il secondo è un enumeratore che definisce le modalità di spostamento. Queste non influiscono sul comportamento del meccanismo a meno che non lo voglia il programmatore: infatti tutti il codice per il travaso e la manipolazione dei dati viene scritto manualmente.Private Sub TextBox1_MouseDown(ByVal senderAs Object , _ByVal eAs EventArgs)Handles TextBox1.MouseDown 'Inizia l'operazione di Drag e Drop dalla textbox numero 1, usando 'come dati da trasportare il sue testo. L'effetto del mouse, invece, 'deve essere quello usato per la copia TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy)End Sub
Ora che si possono iniziare operazioni di Drag&Drop, non è tuttavia portarle a termine: manca infatti il codice che gestisce il meccanismo sul controllo ricevente. Per prima cosa bisogna controllare in entrata, che ci siano dati e, in questo caso, che siano coerenti con il contenuto del controllo. Per far questo si utilizza l'evento DragEnter, che notifica quando il mouse entra nell'area specificata.
Il terzo passo è il più importante e permette di scrivere il pezzo di codice per la gestione effettiva dei dati. Quando il mouse viene rilasciato, si genere l'evento DragDrop, nel quale si deve operare:Private Sub TextBox2_DragEnter(ByVal senderAs Object , _ByVal eAs DragEventArgs)Handles TextBox2.DragEnter 'Se contiene i dati giusti di tipo String If e.Data.GetDataPresent(GetType(String ))Then 'Continua a copiare e.Effect = DragDropEffects.CopyElse 'Altrimenti annulla l'azione e.Effect = DragDropEffects.NoneEnd If End Sub
In questo esempio si è creato un meccanismo molto semplice che permette di trascinare del testo da una textbox ad un'altra, ma nulla vieta di farlo con argomenti assai più complessi, come ad esempio il Drag&Drop di file. Quest'ultimo si può effettuare dall'explorer di windows sui programmi .net semplicemente controllando che i dati siano coerenti a DataFormat.FileDrop: in questo caso i dati sono un array di stringhe contenenti i percorsi completi dei file.Private Sub TextBox2_DragDrop(ByVal senderAs Object , _ByVal eAs DragEventArgs)Handles TextBox2.DragDrop 'Ottiene i dati di tipo string presenti in memoria Dim SAs String = e.Data.GetData(GetType(String )) 'Imposta il testo della seconda textbox uguale a quello della prima TextBox2.Text = SEnd Sub
The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.



