我希望工具提示跟随我的鼠标移动到一个控件上。例如,我们来看一个小组。当鼠标位置在Rectangle(100,100,50,50)内时,我希望ToolTip可见,并且始终位于鼠标的右下方。当它在这个矩形之外时,我希望ToolTip不可见。
我试着这样做:
ToolTip toolTip = new ToolTip();
int x, y;
protected override void OnMouseMove(MouseEventArgs e)
{
if ((x == e.X) && (y == e.Y) && (new Rectangle(100, 100, 50, 50).Contains(e.Location))
toolTip.Show("some text", this, x + 10, y + 10);
else
{
x = e.X;
y = e.Y;
toolTip.Hide(this);
}
}
但是有一个问题 - 当我的工具提示出现时 - 它得到焦点,之后OnMouseMove(MouseEventArgs e)不再起作用。我试图在该功能的最后将焦点集中到面板,但它不起作用。我也尝试过使用OnMouseHover的一些技巧,但效果相同。
答案 0 :(得分:3)
不要使用工具提示 - 如果绘制了Panel,请绘制自己的工具提示;否则,使用Panel并回复两者中的MouseMove事件,但忽略e.Location
,而是使用System.Windows.Forms.Cursor.Position
和PointToClient
。