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;
}
}
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