|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
PICTURE DRAG DROP
Information sur la source
Description
Comment déplacer ou copier une image d'une PictureBox à une autre,ainsi que les Treeview ,les ListBox et les TextBox avec la méthode Drag and Drop.Création d'une "Playlist" dans une listBox et ouverture des fichiers par la commande "Ouvrir avec", grâce au Snippet de "sebmafate" que je remercie.
Source
- Option Strict Off
- Option Explicit On
- Friend Class Form1
- Inherits System.Windows.Forms.Form
- Public IndexdInsertion As Integer
- Const CtrlMask As Byte = 8
- 'Pour enregistrer la Playlist dans le registre :HKEY_CURRENT_USER\Software\VB and VBA Programm Settings\Playlist\Label1
- Private Const APP_NAME As String = "SaveRestoreListBox"
- Private Const SECTION_NAME As String = "Items"
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- 'PictureBox
- picLeft.AllowDrop = True
- picRight.AllowDrop = True
- 'ListBox
- ListBox1.AllowDrop = True
- ListBox2.AllowDrop = True
- 'Charger les valeurs pour la 'Playlist.
- Dim i As Short
- Dim new_value As String
- lstFoods.Items.Clear()
- i = 0
- Do
- new_value = GetSetting(APP_NAME, SECTION_NAME, "Item" & Format(i))
- If Len(new_value) = 0 Then Exit Do
- lstFoods.Items.Add(new_value)
- i = i + 1
- Loop
- End Sub
- '1er exemple PictureBox
- Private Sub PictureBox_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picLeft.MouseDown, picRight.MouseDown
- If e.Button = Windows.Forms.MouseButtons.Left Then
- Dim pic As PictureBox = CType(sender, PictureBox)
- 'invoque le drag and drop operation
- If Not pic.Image Is Nothing Then
- pic.DoDragDrop(pic.Image, DragDropEffects.Move Or DragDropEffects.Copy)
- End If
- End If
- End Sub
-
- ' Manipule l'événement DragEnter pour tous les deux commandes de PictureBox. DragEnter est
- 'l'événement qui tire quand un objet est tiré dans les limites du contrôle.
- Private Sub PictureBox_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles picLeft.DragEnter, picRight.DragEnter
- 'Vérifiez pour être sûr que le contenu tire est le type correct pour ce
- 'contrôle. Sinon, rejetez le drop.
- If (e.Data.GetDataPresent(DataFormats.Bitmap)) Then
- 'Si la touche Ctrl a été appuyée pendant l'opération de tirer, fait alors
- 'une Copie. Sinon, exécutez un Mouvement.
- If (e.KeyState And CtrlMask) = CtrlMask Then
- e.Effect = DragDropEffects.Copy
- Else
- e.Effect = DragDropEffects.Move
- End If
- Else
- e.Effect = DragDropEffects.None
- End If
- End Sub
-
- 'Manipule l'événement DragDrop pour tous les deux commandes de PictureBox. Un dresseur peut être
- 'utilisé tant pour la PictureBox contrôle en jetant l'expéditeur qu'en vérifiant ensuite
- 'La propriété de nom pour déterminer que le contrôle devrait enlever l'image.
- Private Sub PictureBox_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles picLeft.DragDrop, picRight.DragDrop
- Dim pic As PictureBox = CType(sender, PictureBox)
- pic.Image = CType(e.Data.GetData(DataFormats.Bitmap), Bitmap)
-
- 'Provoquez l'image dans l'autre PictureBox (c'est-à-dire la PictureBox qui était
- 'pas l'expéditeur dans l'événement DragDrop) pour être enlevé si la clé Ctrl était
- 'non appuyé.
- If (e.KeyState And CtrlMask) <> CtrlMask Then
- If pic.Name = "picLeft" Then
- picRight.Image = Nothing
- Else
- picLeft.Image = Nothing
- End If
- End If
- End Sub
-
- '2ème exemple TreeView
- ' Manipule l'événement DragDrop pour tous les deux commandes de TreeView.
- Private Sub TreeView_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles tvwLeft.DragDrop, tvwRight.DragDrop
- ' Initialize variable that holds the node dragged by the user.
- Dim OriginationNode As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
-
- 'GetDataPresent est un peu différent pour un TreeView que pour
- 'le texte parce qu'un TreeNode n'est pas un membre du DataFormats
- 'classe. Ainsi, ce n'est pas un type prédéterminé. À ce titre, vous devez utiliser a
- 'la différente surcharge, celui qui prend le type comme une ficelle.
-
- If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", False) Then
- Dim pt As Point
- Dim DestinationNode As TreeNode
-
- 'Utilisez PointToClient pour calculer l'endroit de la souris sur le
- 'destination TreeView.
- pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
-
- 'Utilisez ce Point pour recevoir le noeud le plus proche dans la destination TreeView.
- DestinationNode = CType(sender, TreeView).GetNodeAt(pt)
-
- ' si la déclaration garantit que l'utilisateur ne perd pas complètement
- 'le noeud s'ils libèrent par hasard le bouton de souris sur le noeud ils
- 'essayent pour traîner. Sans un chèque pour voir si le noeud original est le
- 'même que le noeud de destination, ils pourraient voir le noeud disparaître.
- If Not DestinationNode.TreeView Is OriginationNode.TreeView Then
- DestinationNode.Nodes.Add(CType(OriginationNode.Clone, TreeNode))
-
- 'Développez le noeud parental en ajoutant le nouveau noeud pour que le Drop
- 'soit évident. Sans cela, seulement un + le symbole apparaîtrait.
- DestinationNode.Expand()
-
- 'Si la touche Ctrl n'a pas été appuyée, enlever le noeud original et
- 'effectuez un DragDrop.
- If (e.KeyState And CtrlMask) <> CtrlMask Then
- OriginationNode.Remove()
- End If
- End If
- End If
- End Sub
-
- 'Manipule l'événement DragEnter pour tous les deux commandes de TreeView.
- Private Sub TreeView_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles tvwRight.DragEnter, tvwLeft.DragEnter
-
- 'Vérifiez pour être sûr que le contenu tiré est du type correct pour ce
- 'contrôle. Sinon, rejetez la Drop.
- If (e.Data.GetDataPresent("System.Windows.Forms.TreeNode")) Then
-
- 'Si la touche Ctrl a été appuyée pendant l'opération tiré faites alors
- 'une Copie. Sinon, exécutez un DragDrop.
- If (e.KeyState And CtrlMask) = CtrlMask Then
- e.Effect = DragDropEffects.Copy
- Else
- e.Effect = DragDropEffects.Move
- End If
- Else
- e.Effect = DragDropEffects.None
- End If
- End Sub
-
- 'Manipule l'événement ItemDrag pour tous les deux commandes de TreeView.
- Private Sub TreeView_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles tvwRight.ItemDrag, tvwLeft.ItemDrag
- If e.Button = Windows.Forms.MouseButtons.Left Then
-
- ' invoque le drag and drop operation
- DoDragDrop(e.Item, DragDropEffects.Move Or DragDropEffects.Copy)
- End If
- End Sub
-
- '3ème exemple TextBox
- 'Manipule l'événement MouseDown pour TextBox gauche. Cet événement tire quand le
- 'la souris est dans les limites du contrôle et le bouton de souris est cliqué.
- Private Sub TextBoxLeft_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles txtLeft.MouseDown
- If e.Button = Windows.Forms.MouseButtons.Left Then
- txtLeft.SelectAll()
-
- ' invoque le drag and drop operation
- txtLeft.DoDragDrop(txtLeft.SelectedText, DragDropEffects.Move Or DragDropEffects.Copy)
- End If
- End Sub
-
- 'Manipule l'événement DragDrop pour le TextBox juste plus bas. Crée l'événement
- 'quand le bouton de souris est libéré, en terminant l'opération DragDrop.
- Private Sub TextBoxLowerRight_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles txtLowerRight.DragDrop
- txtLowerRight.Text = e.Data.GetData(DataFormats.Text).ToString
-
- 'Si la touche Ctrl n'a pas été appuyée, enlever le texte source pour effectuer le
- 'mouvement DragDrop.
- If (e.KeyState And CtrlMask) <> CtrlMask Then
- txtLeft.Text = ""
- End If
- End Sub
-
- 'Manipule l'événement DragEnter pour le TextBox juste plus bas. DragEnter est
- 'l'événement qui tire quand un objet est tiré dans les limites du contrôle.
- Private Sub TextBoxLowerRight_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles txtLowerRight.DragEnter
-
- 'Vérifiez pour être sûr que le contenu tiré est du type correct pour ce
- 'contrôle. Sinon, rejetez le Drop.
- If (e.Data.GetDataPresent(DataFormats.Text)) Then
-
- 'Si la touche Ctrl a été appuyée pendant l'opération tiré faites alors
- 'une Copie. Sinon, exécutez un DragDrop.
- If (e.KeyState And CtrlMask) = CtrlMask Then
- e.Effect = DragDropEffects.Copy
- Else
- e.Effect = DragDropEffects.Move
- End If
- Else
- e.Effect = DragDropEffects.None
- End If
- End Sub
-
- '4ème exemple ListBox
- 'Dans le listBox1 de départ, l'évènement MouseDown déclenche le glisser déplacer par DoDragDrop.
- Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
- On Error Resume Next 'si la listBox est vide
- ListBox1.DoDragDrop(ListBox1.Items(ListBox1.IndexFromPoint(e.X, e.Y)), DragDropEffects.Copy Or DragDropEffects.Move)
- End Sub
-
- 'ListBox1.IndexFromPoint(e.X, e.Y) retourne l'Index de l'item ou se trouve la souris à partir des coordonnées e.x et e.y du pointeur)
- 'DoDragDrop a 2 arguments: l'élément à draguer et le mode
- 'DragOver qui survient quand la souris se balade sur le contrôle d'arrivé, vérifie si le Drop reçoit bien du texte et met dans IndexdInsertion le listItem qui est sous la souris.
- 'Noter que e.x et e.y sont les coordonnées écran , il faut les transformer en coordonnées client (du contrôle) par PointToClient afin d'obtenir l'index de l'item ou se trouve la souris (en utilisant IndexFromPoint.
-
- Private Sub ListBox2_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragOver
- If Not (e.Data.GetDataPresent(GetType(System.String))) Then
- e.Effect = DragDropEffects.None
- Else
- IndexdInsertion = ListBox2.IndexFromPoint(ListBox2.PointToClient(New Point(e.X, e.Y)))
- e.Effect = DragDropEffects.Copy
- End If
-
- End Sub
-
- 'Enfin dans DragDrop, on récupère le texte dans Item et on ajoute un item après l'item pointé.
- Private Sub ListBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragDrop
- Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)
- ListBox2.Items.Insert(IndexdInsertion + 1, item)
- 'Si la touche Ctrl n'a pas été appuyée, enlever le texte source pour effectuer le
- 'mouvement DragDrop.
- If (e.KeyState And CtrlMask) <> CtrlMask Then
- ListBox1.Items.Remove(ListBox1.SelectedItem)
- End If
- End Sub
- 'Dans le listBox2 de départ, l'évènement MouseDown déclenche le glisser déplacer par DoDragDrop.
- Private Sub ListBox2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox2.MouseDown
- On Error Resume Next 'si la listBox est vide
- ListBox2.DoDragDrop(ListBox2.Items(ListBox2.IndexFromPoint(e.X, e.Y)), DragDropEffects.Copy Or DragDropEffects.Move)
- End Sub
-
- 'ListBox2.IndexFromPoint(e.X, e.Y) retourne l'Index de l'item ou se trouve la souris à partir des coordonnées e.x et e.y du pointeur)
- 'DoDragDrop a 2 arguments: l'élément à draguer et le mode
- 'DragOver qui survient quand la souris se balade sur le contrôle d'arrivé, vérifie si le Drop reçoit bien du texte et met dans IndexdInsertion le listItem qui est sous la souris.
- 'Noter que e.x et e.y sont les coordonnées écran , il faut les transformer en coordonnées client (du contrôle) par PointToClient afin d'obtenir l'index de l'item ou se trouve la souris (en utilisant IndexFromPoint.
-
- Private Sub ListBox1_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragOver
- If Not (e.Data.GetDataPresent(GetType(System.String))) Then
- e.Effect = DragDropEffects.None
- Else
- IndexdInsertion = ListBox1.IndexFromPoint(ListBox1.PointToClient(New Point(e.X, e.Y)))
- e.Effect = DragDropEffects.Copy
- End If
-
- End Sub
-
- 'Enfin dans DragDrop, on récupère le texte dans Item et on ajoute un item après l'item pointé.
- Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop
- Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)
- ListBox1.Items.Insert(IndexdInsertion + 1, item)
- 'Si la touche Ctrl n'a pas été appuyée, enlever le texte source pour effectuer le
- 'mouvement DragDrop.
- If (e.KeyState And CtrlMask) <> CtrlMask Then
- ListBox2.Items.Remove(ListBox2.SelectedItem)
- End If
- End Sub
-
- ' 5ème exemple enregitrement d'une 'Playlist'et ouvrir les fichiers avec le menu 'Ouvrir avec'
- Private Sub cmdOpen_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdOpen.Click
- Dim i As Short
- For i = lstFoods.Items.Count - 1 To 0 Step -1
- If lstFoods.GetSelected(i) Then
-
- End If
- Next i
- 'on appelle le fichier avec 'Ouvrir avec'
- Try
- OpenWith(lstFoods.SelectedItem)
- Catch ex As Exception
- End Try
- End Sub
-
- 'Enlevez l'article choisi.
- Private Sub cmdRemove_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdRemove.Click
- Dim i As Short
- For i = lstFoods.Items.Count - 1 To 0 Step -1
- If lstFoods.GetSelected(i) Then
- lstFoods.Items.RemoveAt((i))
- End If
- Next i
- End Sub
-
- 'Sauvez les articles actuels de la liste.
- 'Utilisez Sur l'Erreur dans le cas où il n'y a aucune valeur sauvée.
- Private Sub Form1_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
- Dim i As Short
- 'Enlevez des articles sauvés existants.
- On Error Resume Next
- DeleteSetting(APP_NAME)
- On Error GoTo 0
- 'Sauvez les articles.
- For i = 0 To lstFoods.Items.Count - 1
- SaveSetting(APP_NAME, SECTION_NAME, "Item" & VB6.Format(i), VB6.GetItemString(lstFoods, i))
- Next i
- End Sub
-
- Private Sub btnFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFile.Click
- Dim new_value As String
- 'On cherche le chemin
- Dim dlg As New OpenFileDialog
- If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
- new_value = dlg.FileName
- If Len(new_value) = 0 Then Exit Sub
- 'Ajoutez un nouvel article.
- lstFoods.Items.Add(new_value)
- End If
- End Sub
-
- End Class
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
Public IndexdInsertion As Integer
Const CtrlMask As Byte = 8
'Pour enregistrer la Playlist dans le registre :HKEY_CURRENT_USER\Software\VB and VBA Programm Settings\Playlist\Label1
Private Const APP_NAME As String = "SaveRestoreListBox"
Private Const SECTION_NAME As String = "Items"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'PictureBox
picLeft.AllowDrop = True
picRight.AllowDrop = True
'ListBox
ListBox1.AllowDrop = True
ListBox2.AllowDrop = True
'Charger les valeurs pour la 'Playlist.
Dim i As Short
Dim new_value As String
lstFoods.Items.Clear()
i = 0
Do
new_value = GetSetting(APP_NAME, SECTION_NAME, "Item" & Format(i))
If Len(new_value) = 0 Then Exit Do
lstFoods.Items.Add(new_value)
i = i + 1
Loop
End Sub
'1er exemple PictureBox
Private Sub PictureBox_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picLeft.MouseDown, picRight.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim pic As PictureBox = CType(sender, PictureBox)
'invoque le drag and drop operation
If Not pic.Image Is Nothing Then
pic.DoDragDrop(pic.Image, DragDropEffects.Move Or DragDropEffects.Copy)
End If
End If
End Sub
' Manipule l'événement DragEnter pour tous les deux commandes de PictureBox. DragEnter est
'l'événement qui tire quand un objet est tiré dans les limites du contrôle.
Private Sub PictureBox_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles picLeft.DragEnter, picRight.DragEnter
'Vérifiez pour être sûr que le contenu tire est le type correct pour ce
'contrôle. Sinon, rejetez le drop.
If (e.Data.GetDataPresent(DataFormats.Bitmap)) Then
'Si la touche Ctrl a été appuyée pendant l'opération de tirer, fait alors
'une Copie. Sinon, exécutez un Mouvement.
If (e.KeyState And CtrlMask) = CtrlMask Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.Move
End If
Else
e.Effect = DragDropEffects.None
End If
End Sub
'Manipule l'événement DragDrop pour tous les deux commandes de PictureBox. Un dresseur peut être
'utilisé tant pour la PictureBox contrôle en jetant l'expéditeur qu'en vérifiant ensuite
'La propriété de nom pour déterminer que le contrôle devrait enlever l'image.
Private Sub PictureBox_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles picLeft.DragDrop, picRight.DragDrop
Dim pic As PictureBox = CType(sender, PictureBox)
pic.Image = CType(e.Data.GetData(DataFormats.Bitmap), Bitmap)
'Provoquez l'image dans l'autre PictureBox (c'est-à-dire la PictureBox qui était
'pas l'expéditeur dans l'événement DragDrop) pour être enlevé si la clé Ctrl était
'non appuyé.
If (e.KeyState And CtrlMask) <> CtrlMask Then
If pic.Name = "picLeft" Then
picRight.Image = Nothing
Else
picLeft.Image = Nothing
End If
End If
End Sub
'2ème exemple TreeView
' Manipule l'événement DragDrop pour tous les deux commandes de TreeView.
Private Sub TreeView_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles tvwLeft.DragDrop, tvwRight.DragDrop
' Initialize variable that holds the node dragged by the user.
Dim OriginationNode As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
'GetDataPresent est un peu différent pour un TreeView que pour
'le texte parce qu'un TreeNode n'est pas un membre du DataFormats
'classe. Ainsi, ce n'est pas un type prédéterminé. À ce titre, vous devez utiliser a
'la différente surcharge, celui qui prend le type comme une ficelle.
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", False) Then
Dim pt As Point
Dim DestinationNode As TreeNode
'Utilisez PointToClient pour calculer l'endroit de la souris sur le
'destination TreeView.
pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
'Utilisez ce Point pour recevoir le noeud le plus proche dans la destination TreeView.
DestinationNode = CType(sender, TreeView).GetNodeAt(pt)
' si la déclaration garantit que l'utilisateur ne perd pas complètement
'le noeud s'ils libèrent par hasard le bouton de souris sur le noeud ils
'essayent pour traîner. Sans un chèque pour voir si le noeud original est le
'même que le noeud de destination, ils pourraient voir le noeud disparaître.
If Not DestinationNode.TreeView Is OriginationNode.TreeView Then
DestinationNode.Nodes.Add(CType(OriginationNode.Clone, TreeNode))
'Développez le noeud parental en ajoutant le nouveau noeud pour que le Drop
'soit évident. Sans cela, seulement un + le symbole apparaîtrait.
DestinationNode.Expand()
'Si la touche Ctrl n'a pas été appuyée, enlever le noeud original et
'effectuez un DragDrop.
If (e.KeyState And CtrlMask) <> CtrlMask Then
OriginationNode.Remove()
End If
End If
End If
End Sub
'Manipule l'événement DragEnter pour tous les deux commandes de TreeView.
Private Sub TreeView_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles tvwRight.DragEnter, tvwLeft.DragEnter
'Vérifiez pour être sûr que le contenu tiré est du type correct pour ce
'contrôle. Sinon, rejetez la Drop.
If (e.Data.GetDataPresent("System.Windows.Forms.TreeNode")) Then
'Si la touche Ctrl a été appuyée pendant l'opération tiré faites alors
'une Copie. Sinon, exécutez un DragDrop.
If (e.KeyState And CtrlMask) = CtrlMask Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.Move
End If
Else
e.Effect = DragDropEffects.None
End If
End Sub
'Manipule l'événement ItemDrag pour tous les deux commandes de TreeView.
Private Sub TreeView_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles tvwRight.ItemDrag, tvwLeft.ItemDrag
If e.Button = Windows.Forms.MouseButtons.Left Then
' invoque le drag and drop operation
DoDragDrop(e.Item, DragDropEffects.Move Or DragDropEffects.Copy)
End If
End Sub
'3ème exemple TextBox
'Manipule l'événement MouseDown pour TextBox gauche. Cet événement tire quand le
'la souris est dans les limites du contrôle et le bouton de souris est cliqué.
Private Sub TextBoxLeft_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles txtLeft.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
txtLeft.SelectAll()
' invoque le drag and drop operation
txtLeft.DoDragDrop(txtLeft.SelectedText, DragDropEffects.Move Or DragDropEffects.Copy)
End If
End Sub
'Manipule l'événement DragDrop pour le TextBox juste plus bas. Crée l'événement
'quand le bouton de souris est libéré, en terminant l'opération DragDrop.
Private Sub TextBoxLowerRight_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles txtLowerRight.DragDrop
txtLowerRight.Text = e.Data.GetData(DataFormats.Text).ToString
'Si la touche Ctrl n'a pas été appuyée, enlever le texte source pour effectuer le
'mouvement DragDrop.
If (e.KeyState And CtrlMask) <> CtrlMask Then
txtLeft.Text = ""
End If
End Sub
'Manipule l'événement DragEnter pour le TextBox juste plus bas. DragEnter est
'l'événement qui tire quand un objet est tiré dans les limites du contrôle.
Private Sub TextBoxLowerRight_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles txtLowerRight.DragEnter
'Vérifiez pour être sûr que le contenu tiré est du type correct pour ce
'contrôle. Sinon, rejetez le Drop.
If (e.Data.GetDataPresent(DataFormats.Text)) Then
'Si la touche Ctrl a été appuyée pendant l'opération tiré faites alors
'une Copie. Sinon, exécutez un DragDrop.
If (e.KeyState And CtrlMask) = CtrlMask Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.Move
End If
Else
e.Effect = DragDropEffects.None
End If
End Sub
'4ème exemple ListBox
'Dans le listBox1 de départ, l'évènement MouseDown déclenche le glisser déplacer par DoDragDrop.
Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
On Error Resume Next 'si la listBox est vide
ListBox1.DoDragDrop(ListBox1.Items(ListBox1.IndexFromPoint(e.X, e.Y)), DragDropEffects.Copy Or DragDropEffects.Move)
End Sub
'ListBox1.IndexFromPoint(e.X, e.Y) retourne l'Index de l'item ou se trouve la souris à partir des coordonnées e.x et e.y du pointeur)
'DoDragDrop a 2 arguments: l'élément à draguer et le mode
'DragOver qui survient quand la souris se balade sur le contrôle d'arrivé, vérifie si le Drop reçoit bien du texte et met dans IndexdInsertion le listItem qui est sous la souris.
'Noter que e.x et e.y sont les coordonnées écran , il faut les transformer en coordonnées client (du contrôle) par PointToClient afin d'obtenir l'index de l'item ou se trouve la souris (en utilisant IndexFromPoint.
Private Sub ListBox2_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragOver
If Not (e.Data.GetDataPresent(GetType(System.String))) Then
e.Effect = DragDropEffects.None
Else
IndexdInsertion = ListBox2.IndexFromPoint(ListBox2.PointToClient(New Point(e.X, e.Y)))
e.Effect = DragDropEffects.Copy
End If
End Sub
'Enfin dans DragDrop, on récupère le texte dans Item et on ajoute un item après l'item pointé.
Private Sub ListBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragDrop
Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)
ListBox2.Items.Insert(IndexdInsertion + 1, item)
'Si la touche Ctrl n'a pas été appuyée, enlever le texte source pour effectuer le
'mouvement DragDrop.
If (e.KeyState And CtrlMask) <> CtrlMask Then
ListBox1.Items.Remove(ListBox1.SelectedItem)
End If
End Sub
'Dans le listBox2 de départ, l'évènement MouseDown déclenche le glisser déplacer par DoDragDrop.
Private Sub ListBox2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox2.MouseDown
On Error Resume Next 'si la listBox est vide
ListBox2.DoDragDrop(ListBox2.Items(ListBox2.IndexFromPoint(e.X, e.Y)), DragDropEffects.Copy Or DragDropEffects.Move)
End Sub
'ListBox2.IndexFromPoint(e.X, e.Y) retourne l'Index de l'item ou se trouve la souris à partir des coordonnées e.x et e.y du pointeur)
'DoDragDrop a 2 arguments: l'élément à draguer et le mode
'DragOver qui survient quand la souris se balade sur le contrôle d'arrivé, vérifie si le Drop reçoit bien du texte et met dans IndexdInsertion le listItem qui est sous la souris.
'Noter que e.x et e.y sont les coordonnées écran , il faut les transformer en coordonnées client (du contrôle) par PointToClient afin d'obtenir l'index de l'item ou se trouve la souris (en utilisant IndexFromPoint.
Private Sub ListBox1_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragOver
If Not (e.Data.GetDataPresent(GetType(System.String))) Then
e.Effect = DragDropEffects.None
Else
IndexdInsertion = ListBox1.IndexFromPoint(ListBox1.PointToClient(New Point(e.X, e.Y)))
e.Effect = DragDropEffects.Copy
End If
End Sub
'Enfin dans DragDrop, on récupère le texte dans Item et on ajoute un item après l'item pointé.
Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop
Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)
ListBox1.Items.Insert(IndexdInsertion + 1, item)
'Si la touche Ctrl n'a pas été appuyée, enlever le texte source pour effectuer le
'mouvement DragDrop.
If (e.KeyState And CtrlMask) <> CtrlMask Then
ListBox2.Items.Remove(ListBox2.SelectedItem)
End If
End Sub
' 5ème exemple enregitrement d'une 'Playlist'et ouvrir les fichiers avec le menu 'Ouvrir avec'
Private Sub cmdOpen_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdOpen.Click
Dim i As Short
For i = lstFoods.Items.Count - 1 To 0 Step -1
If lstFoods.GetSelected(i) Then
End If
Next i
'on appelle le fichier avec 'Ouvrir avec'
Try
OpenWith(lstFoods.SelectedItem)
Catch ex As Exception
End Try
End Sub
'Enlevez l'article choisi.
Private Sub cmdRemove_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdRemove.Click
Dim i As Short
For i = lstFoods.Items.Count - 1 To 0 Step -1
If lstFoods.GetSelected(i) Then
lstFoods.Items.RemoveAt((i))
End If
Next i
End Sub
'Sauvez les articles actuels de la liste.
'Utilisez Sur l'Erreur dans le cas où il n'y a aucune valeur sauvée.
Private Sub Form1_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Dim i As Short
'Enlevez des articles sauvés existants.
On Error Resume Next
DeleteSetting(APP_NAME)
On Error GoTo 0
'Sauvez les articles.
For i = 0 To lstFoods.Items.Count - 1
SaveSetting(APP_NAME, SECTION_NAME, "Item" & VB6.Format(i), VB6.GetItemString(lstFoods, i))
Next i
End Sub
Private Sub btnFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFile.Click
Dim new_value As String
'On cherche le chemin
Dim dlg As New OpenFileDialog
If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
new_value = dlg.FileName
If Len(new_value) = 0 Then Exit Sub
'Ajoutez un nouvel article.
lstFoods.Items.Add(new_value)
End If
End Sub
End Class
Conclusion
La Playlist s'enregistre dans le Registre, tout est expliqué dans la source avec le chemin.
Historique
- 13 février 2008 10:46:16 :
- J'ai ajouté les DragDrop des Treeview et des TextBox avec tout les commentaires
- 13 février 2008 11:13:22 :
- Excusez j'avais remis l'ancien zip, erreur réparé
- 13 février 2008 11:14:27 :
- excusez, j'avais remis l'ancien zip, erreur réparée
- 15 février 2008 11:41:36 :
- Grace au cours VB Net de Philippe Lasserre que je remercie j'ai ajouté les ListBox auxquelles j'ai mis le copier-coller d'une listBox à l'autre ainsi qu'à l'intérieur avec un double click.
- 23 février 2008 18:02:07 :
- Ajout d'enregistrement d'une "Playlist" dans une listBox.
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Enregistrer plusieurs combobox + textbox + listbox [ par Kheops ]
Bonjour a tous ,ben tout est dans le titre :=)Comment faire pour enregistrer dans un fichier .dat (par ex) une dizaine de textbox , deux-trois combobo
DragDrop entre 2 treeview [ par sambre ]
En fait, il s'agit d'alimenter une base de données, dont l'image est dans un premier Treeview, en allant chercher par DragDrop, les données dans un de
URGENT !!!!!URGENT !!!!! copier un item qui eest dans la listbox dans un textbox URGENT !!!!!URGENT !!!!!URGENT !!!!!URGENT !!!!! [ par zmasteur ]
j'aimerai pour que après quon ai cliquer sur un bouton le fichier sélectionner qui est dans la listbox quil sécrive dans un textbox merci @+et ses trè
Recherche listbox [ par Knup ]
Je veux pouvoir recherché a partir d'un textbox dans une listbox. Plus précisement par mot clé :P donc si j'ai Sébastien dans ma listbox et que je tap
listbox dynamique [ par Kypetrovitchy ]
Bonjour à tous,Voilà j'ai un textbox et un listbox.Ce listbox contient toutes les villes.Ce que je voudrais, c'est quand je saisie dans mon textbox de
imprimer un picture box [ par fred ]
bojour,j'ai mis dans un picturebox plusieurs textbox.Mon picturebox a une vscollbar pour faire défiler mes textbox.Comment faire pour imprimer mon pic
Rechercher texte !! :) [ par scoobydoos ]
Salut,j'ai un TextBox, une command "OK" et une ListBox. Je voudrais faire une recherche de texte dans la ListBox avec le texte écrit dans le TextBox..
Transfert Textbox -> ListBox [ par LoUsKy ]
Voila , j'ai un textbox avec plusieur ligne , je voudrai rajoute dans une listbox , les ligne , une par une , comment faire ?merciLoUsKyLa racaille on
DragDrop entre listview et treeview [ par David2410 ]
Bonjour, J'aimerais pouvoir faire un drag and drop depuis un listview et un dossier dans un treeview. Malheureusement, je n'arrive pas à activer le tr
glisser listbox->treeview [ par bingo974 ]
Bonjour,Je n'arrive pas à trouver un code sur vbfrance me permettant de réaliser un dragdrop entre une listbox et un treeview en utilisant OLEDRAG OLE
|
|