工具提示响应图片框上的鼠标移动



我正在尝试制作一个工具提示,其中包含根据您将鼠标悬停在图片框上的内容而变化的文本。 我的代码是这样的:(简化以避免混淆(

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 = trueUseFading = falseUseAnimation = 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 个选项来尝试自己消除闪烁。

最新更新