Bonjour à tous,
Voilà je vous soumet mon problème car cela fait bien 2 jours que je cherche et je ne trouve pas de solution à mon problème ...
J'ai créé un contrôle personnalisé dans une DLL, qui pour faire simple est un panel comprenant une grille.
Ce contrôle doit pouvoir accepter le drag & drop de fichiers windows de toute sorte (image,doc, etc)
J'ai donc mis la propriété AllowDrop de la grille à True et défini les événements suivants :
Cependant lorsque j'utilise ce contrôle dans un de mes projet (Projet Winforms sous framework 4), l’événement DragDrop ne se lance pas. L’événement DragEnter fonctionne très bien puisque je vois l'icône du DragEffect Copy mais lorsque je lâche la souris sur le contrôle, l'event DragDrop ne se lance pas (Difficile à vérifier dans une DLL c est la raison pour laquelle j'utilise un Console.WriteLine pour savoir si l'événement se lance ou non)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 Public Sub dbg_LinkedDocuments_DragEnter(sender As Object, e As DragEventArgs) Handles dbg_LinkedDocuments.DragEnter Try If dt_LinkedDocuments.Dt Is Nothing Then Exit Sub If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then e.Effect = DragDropEffects.Copy ElseIf (e.Data.GetDataPresent("FileGroupDescriptor")) Then e.Effect = DragDropEffects.Copy Else e.Effect = DragDropEffects.None End If Catch End Try End Sub Public Sub dbg_LinkedDocuments_DragDrop(sender As Object, e As DragEventArgs) Handles dbg_LinkedDocuments.DragDrop Try Console.WriteLine("DragDrop") If TypeOf FindForm() Is EACRibbonForm Then CType(FindForm(), EACRibbonForm).Cursor_Wait() End If Dim fileNames As String() = Nothing '... Catch Finally If TypeOf FindForm() Is EACRibbonForm Then CType(FindForm(), EACRibbonForm).Cursor_Default() End If End Try End Sub
J'ai regardé ENORMEMENT de post sur internet mais je n'ai rien trouvé qui résoudrait mon problème.
Voici les différentes causes abordés sur le web :
- Lorsque le programme est lancé en administrateur, il y a une différence de droits d accès entre le programme et l explorateur windows.
Mon programme n'est pas lancé en mode administrateur, j'ai fait le test et lorsqu'il est lancé en mode administrateur, je ne vois pas l'icone du drag & drop configuré dans le DragEnter. C'est donc une autre problématique que mon problème ...
- Un problème de drag & drop pourrait survenir si on lance le programme en mode debug à partir de Visual studio.
J'ai lancé le programme directement via l’exécutable dans le répertoire bin, le problème persiste
J'ai essayé de mettra la propriété AllowDrop à tout les conteneurs de la grille, mais cela n'a pas fonctionné.
Dans VS 2013,j'ai activer les exceptions CLR dans Debug -> Exceptions afin de voir si je ne loupais pas une exception quelconque mais il n'en est rien ...
Auriez vous une idée de la cause de mon problème ? :/
Merci d'avance !
Aeronia
Partager