Meilleur auteur de réponses
comment mettre un curseur dans drag an drop entre deux listes ?

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
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
-
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
-
- Marqué comme réponse EhJoe jeudi 29 décembre 2011 21:48
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. -
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/ -
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 -
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 -
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
-
- Marqué comme réponse EhJoe jeudi 29 décembre 2011 21:48
-
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