Je crée une nouvelle application Windows Forms. Je fais glisser un bouton sur le formulaire. Je dois glisser et déposer ce bouton à un autre emplacement dans ce formulaire lors de l'exécution. des extraits de code ou des liens sont appréciés. J'ai passé une demi-heure à chercher avant de venir ici.Faites glisser et déposez le bouton Windows Forms
Répondre
Vous pouvez commencer avec quelque chose comme ceci:
bool isDragged = false;
Point ptOffset;
private void button1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isDragged = true;
Point ptStartPosition = button1.PointToScreen(new Point(e.X, e.Y));
ptOffset = new Point();
ptOffset.X = button1.Location.X - ptStartPosition.X;
ptOffset.Y = button1.Location.Y - ptStartPosition.Y;
}
else
{
isDragged = false;
}
}
private void button1_MouseMove(object sender, MouseEventArgs e)
{
if (isDragged)
{
Point newPoint = button1.PointToScreen(new Point(e.X, e.Y));
newPoint.Offset(ptOffset);
button1.Location = newPoint;
}
}
private void button1_MouseUp(object sender, MouseEventArgs e)
{
isDragged = false;
}
Merci pour votre réponse. J'ai essayé cela mais le bouton reste toujours là à son emplacement d'origine. J'ai déplacé le code dans le gestionnaire MouseMove dans le gestionnaire MouseUp et maintenant le bouton se déplace vers un nouvel emplacement. le nouvel emplacement est un peu erratique. besoin de comprendre cette partie. mais merci encore pour votre aide – CodingJoy
L'emplacement erratique est probablement dû au décalage. Vous obtenez les coordonnées de la souris dans un format différent des coordonnées de l'écran de l'emplacement. C'est la raison des appels à PointToScreen. – msergeant
@msergeant Excellent exemple, fonctionne très bien! Cependant, j'éprouve une queue vacillante lorsque je fais glisser le bouton. Une idée de ce qui pourrait causer ça? – Maritim
- 1. ipad faites glisser et déposez
- 2. Javascript Faites glisser et déposez
- 3. Dojo: faites glisser et déposez Arrêter Faites glisser
- 4. Faites glisser et déposez sur Desktop/Explorer
- 5. Faites glisser et déposez dans ASP.NET
- 6. C# Faites glisser et déposez la fonctionnalité
- 7. Faites glisser et déposez l'intérieur d'un modalPanel
- 8. faites glisser et déposez dans un dialogue
- 9. Faites glisser et déposez sur Flex AdvancedDataGrid
- 10. Faites glisser et déposez le fichier dans Silverlight 4?
- 11. Faites glisser et déposez l'image dans un formulaire Web
- 12. Faites glisser et déposez la fonctionnalité de fichier au navigateur
- 13. Faites glisser et déposez et les événements de la souris
- 14. Silverlight Faites glisser et déposez pour n'importe quel UIElement?
- 15. Faites glisser et déposez entre les cadres - chrome
- 16. Cocoa: Faites glisser et déposez n'importe quel type de fichier
- 17. Faites glisser et déposez chevauchement ImageView dans Android
- 18. Faites glisser et déposez sur le script Python dans l'Explorateur Windows
- 19. Faites glisser et déposez de C# vers Windows Explorer avec IStorage/IStream
- 20. (Ruby, Rails, Javascript) Faites glisser et déposez sans intercepter le serveur ...?
- 21. Faites glisser et déposez sur le canevas - quelques requêtes relatives aux fonctions
- 22. jqueryUI: Faites glisser l'élément de la boîte de dialogue et déposez-le sur la page principale?
- 23. jcarousellite avec bouton suivant prev et faites glisser auto ensemble
- 24. Faites glisser et déposez une carte à l'aide de la méthode DragDrop
- 25. Cocoa Touch - Faites glisser sur le bouton pour déclencher l'événement
- 26. java/swing: faites glisser et déposez des problèmes avec deux fenêtres enfants
- 27. C# Faites glisser et déposez une zone d'image dans une autre zone d'image
- 28. java/swing: faites glisser et déposez avec une liste de chaînes
- 29. Windows Forms: Bouton avec menu
- 30. WPF - Faites glisser à partir de DataTemplate
Comment allez-vous savoir quand « cliquez sur » le bouton si vous pouvez également le faire glisser? – msergeant
Je n'ai pas besoin d'événements de clic. J'ai juste besoin que l'utilisateur puisse réorganiser les contrôles montrés sur le formulaire. Aucune autre fonctionnalité n'est requise – CodingJoy