2

我正在尝试制作一个工具提示,其文本会根据您在 PictureBox 上悬停的内容而变化。我的代码是这样的:(简化以避免混淆)

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,以防它一遍又一遍地重播动画的第一帧或类似的东西。没有骰子。有什么我想念的想法吗?

4

1 回答 1

0

使用 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 个选项来尝试消除闪烁。

于 2012-05-06T21:41:06.087 回答