2 votes

Comment déplacer une étiquette dans un panneau à l'aide de l'événement MouseMove ?

Je sais que cela devrait être très simple, compte tenu de toutes les informations et des exemples de codes en ligne, mais pour une raison quelconque, je n'arrive pas à le faire fonctionner.

J'ai une étiquette et un panneau sur un winform. Je veux que l'étiquette suive uniquement le pointeur de la souris lorsqu'elle entre et se déplace dans le panneau.

J'ai réussi à le faire fonctionner, mais son emplacement est totalement décalé et il change constamment lorsque vous déplacez la fenêtre.

Voici les événements MouseMove et autres :

constructor MainForm;
begin
  InitializeComponent();
  label2.Visible:=false;
end;

method MainForm.panel1_MouseMove(sender: System.Object; e: System.Windows.Forms.MouseEventArgs);
begin
  //label2.Location := panel1.PointToScreen(e.Location);
  label2.Location := self.PointToScreen(e.Location);
  label2.Invalidate;
end;

method MainForm.panel1_MouseEnter(sender: System.Object; e: System.EventArgs);
begin
  label2.Visible:=true;
end;

method MainForm.panel1_MouseLeave(sender: System.Object; e: System.EventArgs);
begin
  label2.Visible:=false;
end;

Mise à jour Comme suggéré par larstech, j'ai modifié le code, mais l'étiquette apparaît toujours en dehors de la boîte comme le montre l'image ci-dessous.

myimage

Merci,

4voto

LarsTech Points 43510

Je ne sais pas. delphi-prism mais ne serait-ce pas juste :

label2.Location := e.Location;

Comme l'étiquette n'est pas un contrôle enfant, essayez ceci :

label2.Location := new Point(panel1.Left + e.Location.X, panel1.Top + e.Location.Y);

Évidemment, je n'ai peut-être pas la bonne syntaxe.

Si vous essayez simplement de déplacer un ToolTip, cela fonctionne en c# :

private ToolTip _tips = new ToolTip();

private void panel1_MouseMove(object sender, MouseEventArgs e) {
  _tips.Show("test", panel1, e.Location.X + 10, e.Location.Y + 10);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X