2010-04-19 3 views
0

Mon formulaire n'a pas de barre de titre, donc j'implémente le code pour faire glisser le formulaire entier autour de l'écran. J'utilise le code ci-dessous pour le faire, ce qui fonctionne bien. J'ai deux panneaux dans mon formulaire, PanelA et PanelB. Pendant le démarrage, je montre PanelA où le traînage fonctionne parfaitement. Plus tard, lorsque l'utilisateur clique sur le bouton dans PanelA, je dois faire PanelA invisible et afficher PanelB Cependant, le glisser ne fonctionne pas lorsque PanelB est affiché. Quel est le problème ici?Problème avec le déplacement d'un winform en utilisant C#

private void SerialPortScanner_MouseUp(object sender, MouseEventArgs e) 
{ 
    this.drag = false; 
} 

private void SerialPortScanner_MouseDown(object sender, MouseEventArgs e) 
{ 
    this.drag = true; 
    this.start_point = new Point(e.X, e.Y); 
} 

private void SerialPortScanner_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (this.drag) 
    { 
     Point p1 = new Point(e.X, e.Y); 
     Point p2 = this.PointToScreen(p1); 
     Point p3 = new Point(p2.X - this.start_point.X, 
          p2.Y - this.start_point.Y); 
     this.Location = p3; 
    } 
} 
+2

Vous devez être un peu clair. Qu'est-ce que SerialPortScanner? Quels mouseevent initient ces méthodes? Est-il de PanelA ou PanelB ou Formulaire? Si ce sont des événements PanelA, vous devez également gérer les événements PanelB. – Amsakanna

Répondre

1

Edit: Je me suis rendu compte que vous n'êtes pas poser des questions sur glisser-déposer, mais plutôt de déplacer votre forme autour de l'écran. (Merci à @Veer.) J'ai édité votre question pour aider à clarifier ceci. Glisser-déposer est une chose complètement différente, car il glisse des informations d'un contrôle à un autre.

Le même principe de ma réponse s'applique toujours, car les événements de souris sont également gérés au niveau du contrôle - vous devrez peut-être également gérer les événements de la souris depuis PanelB.

+0

Gestion des événements de glisser-déposer sont pour les formes Droite? Y at-il quelque chose comme, je dois gérer à partir du panneau aussi ?? – Anuya

+0

@karthik: Le glisser-déposer est au niveau du contrôle (voir http://msdn.microsoft.com/fr-fr/library/system.windows.forms.control.dragdrop%28VS.80%29.aspx). Si vous voulez faire glisser et déposer dans 'PanelB', vous devrez le manipuler aussi. –

+0

Votre référence http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dragdrop%28VS.80%29.aspx traite de l'événement DragDrop. Mais je ne pense pas qu'un tel événement est utilisé par le QA. Il veut juste faire glisser sa fenêtre manuellement. – Amsakanna

Questions connexes