我正在尝试制作一个工具提示,其中包含根据您将鼠标悬停在图片框上的内容而变化的文本。 我的代码是这样的:(简化以避免混淆(
private ToolTip tt;
private void Picture_MouseMove(object sender, MouseEventArgs e)
{
string rollText =
<code to determine what text should display based on mouse coordinates>
tt.SetToolTip(Picture, rollText);
}
这有效,但问题是当您将鼠标悬停在图片上时,它会使 ToolTip 不断闪烁,因此我进行了修改以防止在不必要的情况下重新绘制它:
private string oldRollText = "";
private ToolTip tt;
private void Picture_MouseMove(object sender, MouseEventArgs e)
{
string rollText =
<code to determine what text should display based on mouse coordinates>
if (rollText != oldRollText)
{
oldRollText = rollText;
tt.SetToolTip(Picture, rollText);
}
}
但是现在它只显示几分之一秒,当你第一次翻过它时就会消失,直到你滚出并再次滚动之前,它再也不会消失了。 我尝试将ShowAlways = true
,所有三个Delay
数字都设置为0,Active = true
,UseFading = false
,UseAnimation = false
,以防它一遍又一遍地重播动画的第一帧或类似的东西。 没有骰子。 知道我错过了什么吗?
使用MouseEnter认为是更好的方法。
private ToolTip tt= new ToolTip();
string rollText;
int mouseX;
int mouseY;
private void Picture_MouseEnter(object sender, MouseEventArgs e)
{
//tt.SetToolTip(Picture, rollText);//option 1
tt.Show();//option 2
}
private void Picture_MouseMove(object sender, MouseEventArgs e)
{
mouseX=e.X;
mouseY=e.Y;
string rollText = ("Mouse position is: X:"+mouseX+" Y:"+mouseY);
tt.SetToolTip(Picture, rollText);//option 2
}
还可以使用 MouseLeave 删除工具提示。
private void Picture_MouseLeave(object sender, MouseEventArgs e)
{
tt.Hide();
}
我已经提出了 2 个选项来尝试自己消除闪烁。