IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Drag & Drop sur un contrôle personnalisé


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut Drag & Drop sur un contrôle personnalisé
    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 :

    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
    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)

    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

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut Bonjour
    Bonjour,

    Je n'ai pas d'idée de cause, mais des petites pistes de recherches :

    1) - 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

    -> Oui mais, compiles tu en Release ? dans bin, tu vas chercher tex executables dans Debug ou Release ?

    2) Lorsque je développe des DLL, je me faits toujours un petit projet de test inclu dans la solution, ainsi je peux tester directement mon code avant de l'utiliser à l’extérieur.

    3) Log tu quelque chose lorsqu'une exception survient ?
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Bonjour,

    Je n'ai pas d'idée de cause, mais des petites pistes de recherches :

    1) - 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

    -> Oui mais, compiles tu en Release ? dans bin, tu vas chercher tex executables dans Debug ou Release ?

    2) Lorsque je développe des DLL, je me faits toujours un petit projet de test inclu dans la solution, ainsi je peux tester directement mon code avant de l'utiliser à l’extérieur.

    3) Log tu quelque chose lorsqu'une exception survient ?
    Merci pour ta réponse,
    alors pour répondre dans l'ordre :

    1) J'ai fait les 2 tests, que ce soit compilé en debug ou en release
    2) J'ai omis cette information importante... J'ai fait le test en créant un projet winforms de test dans la solution de la DLL, et dans ce projet cela fonctionne !
    A noter que pour rajouter la référence vers le contrôle personnalisé,je n'ai pas utilisé une référence directe vers le projet de la DLL mais une référence vers l'assembly de la DLL (en gros, j'ai copié la dll compile dans un répertoire et c'est cette DLL que j'utilise comme référence)
    3) Non je n'ai pas de log en particulier mais dans mon cas le code de l'event DragDrop ne s’exécute pas du tout

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    J'ai trouvé mon problème

    Ma DLL utilisait une méthode d'une autre DLL, qui n'était pas trouvé car je n'avais pas la dernière version de ma DLL copié en local ...

    Le problème étant que l'exception n'était pas attrapé par visual studio et donc invisible

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag and drop sur une PictureBox
    Par abdiouldbody dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/06/2009, 15h55
  2. drag and drop sur une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 30/09/2006, 10h27
  3. Drag and drop sur du text ?
    Par isa150183 dans le forum JSF
    Réponses: 2
    Dernier message: 05/07/2006, 06h28
  4. [FLASH 8] Drag'n'Drop sur Textfield ???
    Par Begood dans le forum Flash
    Réponses: 5
    Dernier message: 28/03/2006, 11h15
  5. Drag and drop sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 02/08/2005, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo