Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

"Look & Feel" tipo explorer applicato a un operazione di cut/paste

$
0
0

Ciao a tutti, sto implementando la funzionalità di CUT/PASTE e sto cercando di replicare il comportamento che ha explorer quando si fa la stessa operazione sui files. In questo modo l'utente si trova ad avere lo stesso "Look&Feel" nell'applicazione di quando fa l'operazione con explorer.

In particolare quando con explorer si seleziona un file e, dal menu contestuale scatenato dal tasto destro, si sceglie CUT l'icona del file "perde" il colore e così rimane fino a quando l'operazione termina o con il PASTE da qualche altra parte o con l'annullo del CUT.

La mia applicazione è composta da un form con un controllo ListView e basta. Nel controllo ListView vengono aggiunti tanti item quanti sono i files in una certa cartella. Quindi ogni item ha, nella proprietà TEXT, il nome del file (senza percorso) mentre la proprietà NAME contiene il path del file. L'icona usata in ciascun elemento viene estratta direttamente dal file con l'istruzione:

---Code----

FileIcon = Icon.ExtractAssociatedIcon(File)

----End Code----

Al momento della selezione della voce CUT dal menu contestuale riesco a levare il colore dell'icona con l'istruzione:

----VB Code---

'Ciclo sugli elementi selected della collezione; Item è la variabile corrente del ciclo

ControlPaint.DrawImageDisabled(ListView1.CreateGraphics, _
ImageList1.Images(Item.ImageKey), Item.Position.X, _Item.Position.Y, ListView1.BackColor)


---End Code

Questa istruzione funziona alla perfezione perchè ottengo il medesimo "Look" di explorer ovvero l'icona associata all'item perde il colore.

Però appena mi sposto su altro form (ad esempio per concludere l'operazione di PASTE) o anche soltanto ridimensiono il form stesso, l'icona ritorna nella sua configurazione iniziale ovvero colorata. Quindi lo strano comportamento l'ho sia quando il form iniziale perde il focus sia quando non lo perde.

Non ho codice negli eventi RESIZE o PAINT o LEAVE del form.

Mi sto scervellando per capire chi sia che dice all'icona di tornare alle origini. Ho provato a inserire un break sull'evento PAINT del form ma non ci passa come pure non passa da altri eventi della ListView ( DrawItem, Invalidated, ItemActivate ).

Qualsiasi suggerimento/chiarimento è come sempre bene accetto

Grazie, Stefano


Viewing all articles
Browse latest Browse all 2212