C# Glisser/déposer d'une image dans une pictureBox avec entrement de l'url dans

Signaler
Messages postés
1
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
10 juillet 2011
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
Bonjour,
Je suis débutant en C# et je travaille sur une application, mais je rencontre actuellement 2 soucis dont voici l'un des 2:

PS: Je suis sous Seven 32bit avec Visual Studio 2010 Ultimate et une base SQLite qui sera intégré à l'appli.

Mon appli est une vidéothèque. Je sais qu'il en existe déjà plein sur le net mais je fais ceci pour me perfectionné.
Je veux avoir la possibilité de mettre une jaquette sur chaque film, qui sera affiché à l'aide d'une pictureBox, mais le truc c'est que je souhaite gérer l'ajout d'une jaquette par cette même pictureBox comme cela:

1)J'ai une jaquette dans un dossier de mon PC.

2)Je souhaite sélectionné cette jaquette et la faire glisser dans ma pictureBox.

3)Mais cette jaquette doit automatiquement se copier dans un dossier "Jaquette" inclus dans l'appli (et supprimer la jaquette qui étais en place si toutefois il en a une).

4)Le chemin d'accès à cette jaquette nouvellement ajouté doit être enregistrer dans la Bdd (Ce nouveau chemin d'accès doit aussi effacer l'ancien chemin si il y en a un).

Donc comment faire ce DragDrop (Si c'est bien ça qu'il faut faire ...)?
Et comment copier la jaquette (donc l'image à proprement parlé) dans le dossier ainsi que son chemin dans la Bdd afin d'y accéder dans l'appli ?

Merci d'avance pour vos réponses

2 réponses

Messages postés
14944
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 janvier 2021
93
Hello,
La gestion du Drag'n Drop se fait simplement en C#.
pictureBox.AllowDrop = true;

Ceci indique que tu autorise le Drag'n Drop sur ta pictureBox.
Ensuite, tu peux gérer le comportement avec les évènements DragEnter, DragDrop,...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
Salut

Je suppose que tu travailles en Winforms.

Pour la partie Drag and Drop :
- Sur ta picturebox, il faut mettre la propriété AllowDrop à true
- Dans les événements de ta picturebox, il faut ajouter un délégué pour DragDrop et un autre pour DragEnter
- Dans le délégué DragEnter (genre void maPictureBox_DragEnter(object sender, DragEventArgs e) ), tu changes l'effet de ta souris si c'est bien un fichier :
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
    e.Effect = DragDropEffects.Copy;
}

- Dans le délégué DragDrop (genre void maPictureBox_DragDrap(object sender, DragEventArgs e) ), tu récupères la liste des fichiers (même s'il n'y en a qu'un), et tu la traites :
string[] fichiers = (string[])(e.Data.GetData(DataFormats.FileDrop)); // Je sais, ça s'invente pas
// De là, tu as le chemin d'accès à ton fichier.


Maintenant que tu as récupéré le chemin d'accès à ton fichier, tu vas devoir faire les choses suivantes :
- Regarder dans ta base de données si tu as déjà une jaquette pour ce film, et si c'est le cas, récupérer son nom (SELECT nomJaquette FROM films WHERE idFilm = ...)
- Copier la nouvelle image vers le répertoire (File.Copy())
- Supprimer l'ancien fichier (File.Delete())
- Mettre à jour ta base de données (UPDATE films SET nomJaquette ... WHERE idFilm ...)

En revanche, fais attention au cas où les noms de tes fichiers seraient identiques.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -