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'n'Drop personnaliser le curseur


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert 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 : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut Drag'n'Drop personnaliser le curseur
    J'ai retrouvé dans du vieux code VS 2005, le moyen de "coller" un label au curseur lors d'un drag and drop.

    Ça ressemblait à ça:

    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
    37
    38
     Private Sub DataGrid_Suivi_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid_Suivi.MouseDown
            'Drag and drop du suivi
     
            Dim hti As DataGrid.HitTestInfo
            hti = DataGrid_Suivi.HitTest(e.X, e.Y)
     
            'Si on clique sur une en-tête avec le bouton gauche, on commence le Drag and Drop
            If (hti.Type = DataGrid.HitTestType.ColumnHeader) And (e.Button = MouseButtons.Left) Then
     
                from = hti.Column
     
                label1 = New Label
                label1.Visible = False
                DataGrid_Suivi.Controls.Add(label1)
     
                label1.Height = 17
     
                ' On garde dans la variable "drag" le fait qu'on commence le drag and drop
                drag = True
     
                label1.BackColor = DataGrid_Suivi.TableStyles(table_choisi).HeaderBackColor
                label1.Width = DataGrid_Suivi.TableStyles(table_choisi).GridColumnStyles(hti.Column).Width
                label1.Text = DataGrid_Suivi.TableStyles(table_choisi).GridColumnStyles(hti.Column).HeaderText
     
                 End If
     
        End Sub
     
     
     Private Sub DataGrid_Suivi_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid_Suivi.MouseMove
            If (drag) Then
                ' On déplace le Label en même temps que la souris
                label1.Left = e.X
                label1.Top = e.Y
                label1.Visible = True
            End If
     
        End Sub
    Ce code fonctionne est permettait de déplacer des colonnes de datagrid. Et bien sur en même temps que la souris, un label afficher le contenu déplacer.

    Bon, aujourd'hui je souhaite faire un drag and drop d'une listview vers un datagridview.

    Et je souhaite créer un label qui contient l'élément à déplacer, qui suivra le curseur. Voici un bout de code:

    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
     Private Sub MaListView_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MaListView.MouseDown
     
            Try
                Dim index As Integer = MaListView.HitTest(e.X, e.Y).Item.Index
     
                If index > -1 Then
                    Drag_bool = True
                    MaListView.DoDragDrop(MaListView.Items.Item(index).SubItems(0).Text, DragDropEffects.Copy Or DragDropEffects.Move)
     
                    Drag_label = New Label
                    Drag_label.Text = MaListView.Items.Item(index).SubItems(0).Text
                    Drag_label.ForeColor = Color.Black
                    Drag_label.Visible = True
                    Drag_label.Height = 25
                    Drag_label.Width = 20
                    Drag_label.BackColor = Color.Silver
     
                    Me.Controls.Add(Drag_label)
     
     
                End If
     
            Catch ex As Exception
                MesLogs.Enregistre_log("MaListView_MouseDown - " & ex.Message, 1)
            End Try
     
        End Sub
    Pour déplacer le label en même temps que le curseur je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub MaFormPrincipale_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
            If Drag_bool Then
     
     
     
                Drag_label.Left = e.X
                Drag_label.Top = e.Y
                Drag_label.Visible = True
     
     
            End If
     
     
        End Sub
    Mais le curseur rester sur le curseur par défaut du drag and drop, c'est pourquoi j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub MaListView_GiveFeedback(ByVal sender As Object, ByVal e As System.Windows.Forms.GiveFeedbackEventArgs) Handles MaListView.GiveFeedback
     
            e.UseDefaultCursors = False
     
     
        End Sub
    Je rappelle que l'action du drag and drop fonctionne... Mais la le curseur reste simplement la flèche par défaut.

    Quelqu'un a une idée? Merci d'avance

  2. #2
    Membre Expert 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 : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    J'ai bien trouvé ça:

    http://www.codeproject.com/KB/miscct...tomCursor.aspx

    Mais je trouve ce code un peu compliqué juste pour faire un "label amovible"...

    Si quelqu'un a une inspiration, qu'il n'hésite pas.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    J'ai bien trouvé ça:

    http://www.codeproject.com/KB/miscct...tomCursor.aspx

    Mais je trouve ce code un peu compliqué juste pour faire un "label amovible"...
    Ben d'après MSDN, la bonne façon de faire est d'affecter un curseur à Cursor.Current, donc je pense que ce projet est la bonne solution

Discussions similaires

  1. drag and drop et curseur
    Par glebourg dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 08/12/2010, 15h05
  2. [Drag'n'Drop] problème affichage du curseur
    Par julie4207 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 04/09/2008, 09h12
  3. [SWT/JFACE] Drag and drop avec une image sur le curseur
    Par soft-war dans le forum SWT/JFace
    Réponses: 5
    Dernier message: 30/07/2008, 13h01
  4. [DOM] [Drag N Drop] Element HTML sous le curseur
    Par nicolas.pied dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/10/2007, 09h25

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