none
comment mettre un curseur dans drag an drop entre deux listes ? RRS feed

  • Question

  • Bonjour,

    comment mettre un curseur dans drag an drop entre deux listes...

    J'ai deux problèmes, déjà je ne sais pas comment faire accepter mes ressource pas le Cursor.Current, soit :

    'System.Windows.Forms.Cursor = System.Drawing.Bitmap
    '
    Cursor.Current = My.Resources.vaCur
    Cursor.Current = My.Resources.vaIco
    Cursor.Current = My.Resources.vaBmp
    
    
    

    ???

    En plus, lors de mon drag and drop entre deux listBox  je voudrais mettre comme sus-cité un curseur personnel (curseur, icône, bitmap), ce qui est accepté en fait...

    J'ai même essayé les curseur proposés par le système, ça ne fonctionne pas mieux où que je le mette, ça affiche 1/2 second mon curseur, puis ça affiche un sens interdit, puis quand on commence à glisser ça affiche la petite fenêtre vide en pointillés...

    Alors ici : où mettre le curseur (quand il marchera), dans quelle procédure évènementielle, car dans les trois que j'ai là, comme susdit ça ne marche pas, voici le début du code concerné :

    Option Explicit On
    Imports System.IO
    Imports System.Text
    
    Partial Public Class Form1
      Private Structure DDS
        Public ListBox As ListBox
        Public Item As String
        Public Index As Integer
      End Structure
    
      Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler ListBox1.MouseDown, AddressOf ListBox_MouseDown
        AddHandler ListBox2.MouseDown, AddressOf ListBox_MouseDown
        AddHandler ListBox1.DragOver, AddressOf ListBox_DragOver
        AddHandler ListBox2.DragOver, AddressOf ListBox_DragOver
        AddHandler ListBox1.DragDrop, AddressOf ListBox_DragDrop
        AddHandler ListBox2.DragDrop, AddressOf ListBox_DragDrop
        ListBox1.Items.Clear() ' 32 maxi
        ListBox2.Items.Clear()
        ListBox3.Items.Clear()
        ListBox1.AllowDrop = True
        ListBox2.AllowDrop = True
        For Each c As Char In "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
          ListBox3.Items.Add(c)
        Next c
        Me.Left = 10
        Me.Top = 10
        Call litProduits()
      End Sub
    
      Sub ListBox_MouseDown(ByVal sender As ListBox, ByVal e As System.Windows.Forms.MouseEventArgs)
        If sender.Items.Count > 0 Then
          Dim data As DDS
          data.Index = sender.IndexFromPoint(e.X, e.Y)
          If data.Index >= 0 Then
            sender.SelectedIndex = data.Index
            data.ListBox = sender
            data.Item = sender.SelectedItem.ToString()
            Try
              'http://cjoint.com/?0LDvogFWc8L 
              'System.Windows.Forms.Cursor = System.Drawing.Bitmap
              '
              'Cursor.Current = My.Resources.vaCur
              'Cursor.Current = My.Resources.vaIco
              'Cursor.Current = My.Resources.vaBmp
              '
              sender.DoDragDrop(data, DragDropEffects.Move)
            Catch
              MsgBox(Err.Description & vbLf & Err.Number)
            End Try
          End If
        End If
      End Sub
    
      Sub ListBox_DragOver(ByVal sender As ListBox, ByVal e As System.Windows.Forms.DragEventArgs)
        If e.Data.GetDataPresent(GetType(DDS)) Then
          Dim data As DDS = e.Data.GetData(GetType(DDS))
          If data.ListBox Is sender Then
            e.Effect = DragDropEffects.None
            Exit Sub
          End If
          e.Effect = DragDropEffects.Move
        End If
      End Sub
    
      Sub ListBox_DragDrop(ByVal sender As ListBox, ByVal e As System.Windows.Forms.DragEventArgs)
        If e.Data.GetDataPresent(GetType(DDS)) Then
          Dim data As DDS = e.Data.GetData(GetType(DDS))
          sender.Items.Add(data.Item)
          data.ListBox.Items.RemoveAt(data.Index)
          Call afficheCompteurs()
        End If
      End Sub
    

    ???

    Pour une meilleur compréhension ou pour tester, vous pouvez charger tout le programme en dossier zipé ici :

    http://cjoint.com/?0LDvogFWc8L

    En vous remerciant, cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    jeudi 29 décembre 2011 20:25

Réponses

  • Re,

    Je viens de tester chez moi avec une image png et cela fonctionne !!

    Me.Cursor = New Cursor(My.Resources.TonImage.GetHicon)
    

    Bien à vous.


    ZGuideTV.NET project Admin/Dev : http://zguidetv.codeplex.com/
    • Marqué comme réponse EhJoe jeudi 29 décembre 2011 21:48
    jeudi 29 décembre 2011 21:38
  • Je suis content qu'en fin ça marche.

    Ça fait toujours plaisir de participer à tes threads.

     Sinon, n'oublie pas de marquer ma contribution comme réponse si tu pense qu'elle contribue à la solution pour que d'autre puissent en profiter.

     

    Au plaisir, cordialement.

    • Modifié Ould MouradEditor jeudi 29 décembre 2011 22:16
    • Marqué comme réponse EhJoe jeudi 29 décembre 2011 22:24
    jeudi 29 décembre 2011 22:14
    Auteur de réponse
  • Ah, merci, enfin ça marche, mais je viens de voir que ce n'est pas pour les curseurs, c'est pour les images (j'avais préparé les trois cur, bmp et ico )...

    Cursor.Current = New Cursor(My.Resources.vaBmp.GetHicon)
    

    Merci, résolu.

     

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse EhJoe jeudi 29 décembre 2011 21:48
    jeudi 29 décembre 2011 21:47

Toutes les réponses

  • Bonjour,

    Pour pouvoir jouer sur le cureur lors d'un drag end drop, il faut se placer dans un handler de l’évènement  GiveFeedback de votre contrôle déplacé

    pour mettre la propriété e.UseDefaultCursors à False :

        Private Sub label_GiveFeedback(ByVal sender As System.Object, ByVal e As System.Windows.Forms.GiveFeedbackEventArgs) Handles ListBox1.GiveFeedback
            e.UseDefaultCursors = False
            Cursor.Current = Cursors.Help
            'Cursor.Current = My.Resources.vaCur
            'Cursor.Current = My.Resources.vaIco
            'Cursor.Current = My.Resources.vaBmp
        End Sub
    

    Cordialement.

    jeudi 29 décembre 2011 21:03
    Auteur de réponse
  • Bonjour,

    Sinon, je vois un exemple ici : http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop.aspx#Y0

    Recherchez après '' Creates custom cursors for the drag-and-drop operation' dans le code.

    Bien à vous.

     

     

     


    ZGuideTV.NET project Admin/Dev : http://zguidetv.codeplex.com/
    jeudi 29 décembre 2011 21:09
  • Bonsoir Mourad, t'es un chef, ça marche !

    Reste le problème de mon "curseur personnel" que je ne sais comment convertir pour l'afficher depuis les ressources ?

    Nouveau Code :

      Sub ListBox1_GiveFeedback(sender As Object, e As System.Windows.Forms.GiveFeedbackEventArgs) Handles ListBox1.GiveFeedback
        e.UseDefaultCursors = False
        Cursor.Current = Cursors.Help
        '
        'System.Windows.Forms.Cursor = System.Drawing.Bitmap
        '
        'Cursor.Current = My.Resources.vaCur
        'Cursor.Current = My.Resources.vaIco
        'Cursor.Current = My.Resources.vaBmp
      End Sub
    
      Sub ListBox2_GiveFeedback(sender As Object, e As System.Windows.Forms.GiveFeedbackEventArgs) Handles ListBox2.GiveFeedback
        e.UseDefaultCursors = False
        Cursor.Current = Cursors.PanWest
        '
        'System.Windows.Forms.Cursor = System.Drawing.Bitmap
        '
        'Cursor.Current = My.Resources.vaCur
        'Cursor.Current = My.Resources.vaIco
        'Cursor.Current = My.Resources.vaBmp
      End Sub
    
    
    


    Au plaisir, cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    jeudi 29 décembre 2011 21:13
  • Bonsoir Neojudgment,

    Hélas je ne trouve pas comment faire tourner, faut dire que c'est la pemière fois, c'est ma ressurce qui me cause problème à la conversion, je ne sais ???

    Sub ListBox1_GiveFeedback(sender As Object, e As System.Windows.Forms.GiveFeedbackEventArgs) Handles ListBox1.GiveFeedback
        e.UseDefaultCursors = False
        Cursor.Current = Cursors.Help
        '
        'Cursor.Current = New Cursor("My.Resources.vaCur.cur") ' accepté mais bloque le glissé
        'Cursor.Current = New Cursor.My.Resources.vaCur
        'Cursor.Current = Cursors.My.Ressoures.vacur ' vaCur.cur
      End Sub
    
    


    Cordialement.

     

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    jeudi 29 décembre 2011 21:34
  • Re,

    Je viens de tester chez moi avec une image png et cela fonctionne !!

    Me.Cursor = New Cursor(My.Resources.TonImage.GetHicon)
    

    Bien à vous.


    ZGuideTV.NET project Admin/Dev : http://zguidetv.codeplex.com/
    • Marqué comme réponse EhJoe jeudi 29 décembre 2011 21:48
    jeudi 29 décembre 2011 21:38
  • Ah, merci, enfin ça marche, mais je viens de voir que ce n'est pas pour les curseurs, c'est pour les images (j'avais préparé les trois cur, bmp et ico )...

    Cursor.Current = New Cursor(My.Resources.vaBmp.GetHicon)
    

    Merci, résolu.

     

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse EhJoe jeudi 29 décembre 2011 21:48
    jeudi 29 décembre 2011 21:47
  • Je suis content qu'en fin ça marche.

    Ça fait toujours plaisir de participer à tes threads.

     Sinon, n'oublie pas de marquer ma contribution comme réponse si tu pense qu'elle contribue à la solution pour que d'autre puissent en profiter.

     

    Au plaisir, cordialement.

    • Modifié Ould MouradEditor jeudi 29 décembre 2011 22:16
    • Marqué comme réponse EhJoe jeudi 29 décembre 2011 22:24
    jeudi 29 décembre 2011 22:14
    Auteur de réponse