ToolTip响应PictureBox上的鼠标移动

时间:2012-05-05 23:51:08

标签: c# tooltip picturebox flicker mousemove

我正在尝试使用根据您在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 = trueUseFading = falseUseAnimation = false,以防重播第一帧一遍又一遍的动画或类似的东西。没有骰子。我缺少什么想法?

1 个答案:

答案 0 :(得分: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个选项来尝试自己来消除闪烁。