我知道这应该非常简单,特别是在线提供所有信息和示例代码,但由于某种原因,我无法让它工作。
我在winform上有一个Label和一个Panel。我希望标签仅在鼠标指针进入并在面板内移动时跟随鼠标指针。
我得到了它的工作,但它的位置完全转移,当你移动winform时它总是在变化。
这是MouseMove和其他事件:
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;
更新正如larstech建议的那样,我修改了代码,但标签仍然显示在框外,如下图所示。
谢谢,
答案 0 :(得分:4)
我不知道delphi-prism
,但不会只是:
label2.Location := e.Location;
由于Label不是子控件,请尝试:
label2.Location := new Point(panel1.Left + e.Location.X, panel1.Top + e.Location.Y);
显然,我可能没有正确的语法。
如果您只是想移动工具提示,则可以使用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);
}