cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
18 mai 2006 à 14:08
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
19 mai 2006 à 11:19
Bonjour,
Je souhaiterai réaliser une sorte d'explorer pour la copie de fichiers.
En fait, je liste dans 2 ListView différente deux répertoires et j'aimerai par drag&drop copie/déplacer les fichiers.
Actuellement j'arrive à drag&dropper le nom des fichiers mais j'aimerai transmettre un FileInfo plutot qu'un String mais je n'y arriv pas.
De plus, je voudrais n'autoriser que le drag&drop depuis ListView2 pour la ListView1 et inversement que depuis la ListView1 pour la ListView2. Actuellement, je peux faire un drag&drap de la ListView1 vers la ListView1 ce qui ne correspond pas à mon choix.
string name = (
string)e.Data.GetData(
DataFormats.Text);
this.listView1.Items.Add(name);
}
Serez-vous m'aider à résoudre mon problème car en fait pour les fichiers ca semble être comme ça pour la réception :
private
void listView1_DragEnter(
object sender,
DragEventArgs e)
{
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 19 mai 2006 à 11:17
Si tu décides d'utiliser une structure, prend garde à ce que tu vas mettre dedans (garde à l'idée qu'une structure ne fonctionne pas avec des références, mais des copies !).
Si comme dans l'exemple tu passes un ListView complet, c'est possible que tu aies des problèmes de performances...
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 18 mai 2006 à 14:59
Salut,
Le méthode DragDrop prend un object en argument, ce qui te permet donc de "drag and dropper" n'importe quoi. Il faut ensuite faire les cast nécessaire pour retrouver l'object envoyé.
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 18 mai 2006 à 15:39
Oui oui, je sus d'accord avez toi, mais mon probleme vient plutot du fait que je ne sais pas quoi envoyer pour pouvoir utiliser le format "DataFormats
.FileDrop".
Actuellement, je passe en paramètre le nom complet des fichiers à transférer, ca fonctionne mais c'est pas exactement ce que je veux faire, pour éviter d'avoir plusieur drag&drop possible. Avec un "filtre" sur "DataFormats
.FileDrop"
je peux faire un glissé/déposer depuis le bureau windos par exemple.
Merci de la réponse, mais elle ne correspond pas tout a fait à ce que je veux.
f.colo
Voilà comment je fais pour le moment.
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
String[] fullFilesNames = new String[this.listView1.SelectedItems.Count];
for (int i = 0; i < this.listView1.SelectedItems.Count; i++)
{
fullFilesNames[i] = this.localDirectory + "\" + this.listView1.SelectedItems[i].Text;
}
this.listView1.DoDragDrop(fullFilesNames, DragDropEffects.Copy);
}
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 18 mai 2006 à 20:29
Salut,
Comme je l'ai dit dans mon message précédant, la méthode DoDragDrop prend un objet en argument, ce qui à l'avantage de passer tout ce qu'on veut. Si y'a plusieurs élément à passer, on créer un nouvel object qui regroupe tout les éléments.
Ce que tu fais donc, c'est créer un nouvel object, qui contient une référence de ton object FileInfo et une référence de ton listView.
Quand tu arrives dans l'event DragDrop, tu regardes si l'object que tu reçois est du bon type, puis tu récupères ton FileInfo et la référence de ton ListView (cette dernière va te permettre de savoir si tu es sur le même ListView ou pas).
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 19 mai 2006 à 09:18
Oui, c'est tout a fait clair :)
Mais en fait je voulais créer un "DataFormats
.FileDrop"
pour faire copier un drag&drop d'un fichier depuis le bureau windows.
par contre tu marques:
Si y'a plusieurs élément à passer, on créer un nouvel object qui regroupe tout les éléments.
et:
tu regardes si l'object que tu reçois est du bon type
Ca je ne comprend pas, comment faire si l'objet est de plusieur type pour vérifier son type?