Dans un de mes formulaire j'ai un FlowLayoutPanel composer de boutton a
l'intérieur
J'aimerai pouvoir deplacer c'est boutton dans un autre FlowLayoutPanel.
Est-ce que cela est possible ?? car, quand je demarre mon programme et que
je clique sur mon boutton et bien comme de raison il ne bouge pas. (j'ai cru
comprendre qu'il faut placer du code dans le Boutton1_MouseDown ou quelque
chose dans le genre)
Merci de votre aide !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alain
Bonjour,
La methode la plus simple est de le faire en une seule fois avec du drag drop Mais comme je crois que l'on ne peux pas le faire directement avec des objets, il faut ruser en employant le nom de l'objet. Donc : Sur chaque bouton , faire un DoDragDrop sur son mousedown avec en parametre le button.name If e.Button = Windows.Forms.MouseButtons.Left Then MonButton.DoDragDrop(CStr(MonButton.Name), DragDropEffects.Move) End If
Sur le panel d'arrivee faire un dragenter If e.Data.GetData(System.Windows.Forms.DataFormats.Text) <> "" Then e.Effect = DragDropEffects.Move Else e.Effect = DragDropEffects.None End If
Sur le panel d'arrivee faire un dragdrop avec une boucle for each sur le controle de depart Private Sub FlowLayoutPanel2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles FlowLayoutPanel2.DragDrop Dim mastr As String mastr = e.Data.GetData(System.Windows.Forms.DataFormats.Text) 'Recupere le nom du controle Dim ctr As Control For Each ctr In Me.FlowLayoutPanel1.Controls If ctr.Name = mastr Then ctr.Parent = Me.FlowLayoutPanel2 ' Deplace le controle dans le panel Exit Sub End If Next End Sub
Ne pas oublier de modifier le allowdrop de chaque panel
Voila, cela devrait fonctionner Bon courage
Bonjour,
La methode la plus simple est de le faire en une seule fois avec du drag
drop
Mais comme je crois que l'on ne peux pas le faire directement avec des
objets, il faut ruser en employant le nom de l'objet.
Donc :
Sur chaque bouton , faire un DoDragDrop sur son mousedown avec en
parametre le button.name
If e.Button = Windows.Forms.MouseButtons.Left Then
MonButton.DoDragDrop(CStr(MonButton.Name), DragDropEffects.Move)
End If
Sur le panel d'arrivee faire un dragenter
If e.Data.GetData(System.Windows.Forms.DataFormats.Text) <> "" Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
Sur le panel d'arrivee faire un dragdrop avec une boucle for each sur le
controle de depart Private Sub
FlowLayoutPanel2_DragDrop(ByVal sender As Object, ByVal e As
System.Windows.Forms.DragEventArgs) Handles FlowLayoutPanel2.DragDrop
Dim mastr As String
mastr = e.Data.GetData(System.Windows.Forms.DataFormats.Text)
'Recupere le nom du controle
Dim ctr As Control
For Each ctr In Me.FlowLayoutPanel1.Controls
If ctr.Name = mastr Then
ctr.Parent = Me.FlowLayoutPanel2 ' Deplace le controle dans
le panel
Exit Sub
End If
Next
End Sub
Ne pas oublier de modifier le allowdrop de chaque panel
La methode la plus simple est de le faire en une seule fois avec du drag drop Mais comme je crois que l'on ne peux pas le faire directement avec des objets, il faut ruser en employant le nom de l'objet. Donc : Sur chaque bouton , faire un DoDragDrop sur son mousedown avec en parametre le button.name If e.Button = Windows.Forms.MouseButtons.Left Then MonButton.DoDragDrop(CStr(MonButton.Name), DragDropEffects.Move) End If
Sur le panel d'arrivee faire un dragenter If e.Data.GetData(System.Windows.Forms.DataFormats.Text) <> "" Then e.Effect = DragDropEffects.Move Else e.Effect = DragDropEffects.None End If
Sur le panel d'arrivee faire un dragdrop avec une boucle for each sur le controle de depart Private Sub FlowLayoutPanel2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles FlowLayoutPanel2.DragDrop Dim mastr As String mastr = e.Data.GetData(System.Windows.Forms.DataFormats.Text) 'Recupere le nom du controle Dim ctr As Control For Each ctr In Me.FlowLayoutPanel1.Controls If ctr.Name = mastr Then ctr.Parent = Me.FlowLayoutPanel2 ' Deplace le controle dans le panel Exit Sub End If Next End Sub
Ne pas oublier de modifier le allowdrop de chaque panel