c# – 如何防止工具提示在自定义控件中闪烁?
发布时间:2020-12-15 18:24:55 所属栏目:百科 来源:网络整理
导读:我做了一个自定义控件,当条件满足时,我想显示一个工具提示: protected override void OnMouseMove(MouseEventArgs e){ base.OnMouseMove(e); var plannedItem = GetPlannedItemByPosition(e.Location); if (plannedItem != null) _tooltip.SetToolTip(this,
我做了一个自定义控件,当条件满足时,我想显示一个工具提示:
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); var plannedItem = GetPlannedItemByPosition(e.Location); if (plannedItem != null) _tooltip.SetToolTip(this,plannedItem.Description); else _tooltip.RemoveAll(); } 此代码工作正常,除了工具提示闪烁的面孔. 这个自定义控件描绘了OnPaint事件中的所有信息,也许这与它有关?如果是这样,我怎样才能防止工具提示闪烁? 解决方法
在鼠标光标位置显示工具提示时会发生这种情况.只要提示窗口出现,Windows就会注意到鼠标位于该窗口中并发布了MouseMove消息.这使得工具提示消失了.这使Windows将MouseMove消息发送到您的控件,运行OnMouseMove()方法.这使得工具提示再次出现. Etcetera,你会看到工具提示迅速闪烁.
通过以下任何方法解决此问题: >显示工具提示远离鼠标位置,因此它不会与鼠标光标重叠>仅在需要更改时更新/显示工具提示>将控件的Capture属性设置为true,以便工具提示不会获得MouseMove消息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |