我正在尝试使用根据您在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
,以防重播第一帧一遍又一遍的动画或类似的东西。没有骰子。我缺少什么想法?
答案 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个选项来尝试自己来消除闪烁。