Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 工具提示闪烁。_C#_Winforms_C# 3.0_Tooltip_Flicker - Fatal编程技术网

C# 工具提示闪烁。

C# 工具提示闪烁。,c#,winforms,c#-3.0,tooltip,flicker,C#,Winforms,C# 3.0,Tooltip,Flicker,我有一个音频文件的波形。在波形的末尾,我想在tooptip中显示波形末尾前50像素区域中的一些文本。我希望工具提示只显示在从波形结束前50个像素到波形结束的区域中。我写了一些代码,但它会导致工具提示闪烁,即当我移动鼠标时,工具提示会一直出现。请帮助停止闪烁。 代码是: private void Waveform_MouseMove(object sender, MouseEventArgs e) { bool IsMatching = false; ToolTip tooltip

我有一个音频文件的波形。在波形的末尾,我想在tooptip中显示波形末尾前50像素区域中的一些文本。我希望工具提示只显示在从波形结束前50个像素到波形结束的区域中。我写了一些代码,但它会导致工具提示闪烁,即当我移动鼠标时,工具提示会一直出现。请帮助停止闪烁。 代码是:

private void Waveform_MouseMove(object sender, MouseEventArgs e)
{
    bool IsMatching = false;
    ToolTip tooltip1 = new ToolTip();
    if (e.X <= this.Width && e.X >= this.Width - 50)
    {
       tooltip1.Show("end here", this, e.X, e.Y);
       IsMatching = true;
    }

   if(!IsMatching)
       tooltip1.Hide(this);
}
private void波形\u MouseMove(对象发送器,MouseEventArgs e)
{
bool IsMatching=false;
工具提示tooltip1=新工具提示();
如果(e.X=此宽度-50)
{
工具提示1.显示(“在此处结束”,this,e.X,e.Y);
IsMatching=true;
}
如果(!IsMatching)
工具提示1.隐藏(此);
}

在表单中声明
工具提示1
,而不是在鼠标移动时创建新实例,也可以在每次创建新实例时,调用
工具提示1.Hide()
您没有隐藏旧工具提示,而是隐藏新创建的“尚未显示…”


还考虑将表单设置为<代码> Trase< /C> >,用来减少闪烁。

这解决了我的闪烁问题。谢谢但是现在无论我在波形上的什么地方保留工具提示,它都会在那里显示工具提示。它应该只显示在50像素的区域。我想闪烁是通过在任何时候显示工具提示时存储鼠标移动(x,y)来解决的。在鼠标事件中显示工具提示会立即导致后续的mousemove事件,即使鼠标未在其间移动。您可能通过对mousemove事件中保存的(x,y)进行测试来解决此问题,并阻止重复另一次显示尝试,从而打破了以前的重复循环?