首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在控件下面弹出ToolTipText

问在控件下面弹出ToolTipText
EN

Stack Overflow用户
提问于 2020-12-25 09:48:18
回答 1查看 27关注 0票数 0

我有一个带有NotifyIcon的.NET应用程序,它位于系统托盘中。nic有一个ContextMenuStrip,而ctx mnu有几个ToolStripMenuItems。它们中的大多数都在运行时设置了ToolTipText。问题是,大多数情况下,ttp会在mnu项下弹出。它将会被mnu物品本身所遮挡。根据我移动鼠标的位置,ttp有时会在mnu上弹出,您可以完整地看到它,但大多数情况下不是这样。

ttp怎么可能在它的控制下弹出(从而使它变得无用),这超出了我的能力范围,但有人知道如何阻止这种行为吗?

下面是设置它的代码。非常直截了当:

代码语言:javascript
复制
Dim mnu As ToolStripMenuItem = ctmMain.Items.OfType(Of ToolStripMenuItem).Where(Function(m) m.Tag IsNot Nothing AndAlso m.Tag = "EM_" & Account).First
mnu.ToolTipText = dt.Rows(0)("Display")

我尝试过在ctx上运行ShowItemToolTips (以及其他一些随机操作),但是没有什么能改变这个行为。我要么需要解决这个问题,要么找到一些简单的ToolStripMenuItem.ToolTipText替代方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-25 09:48:18

好吧,我在中途发现了这一点,但我想我应该把它发布给其他遇到这种行为的人。无论我怎么尝试,ToolTipText都是不可行的,但我能够在主窗体中添加一个ToolTip控件并劫持它。我将ContextMenu的ShowItemToolTips设置为False,并手动处理ToolTipText文本的显示。

您不能将ToolTip控件与ToolStripMenuItem一起使用(因为后者不是控件),但是您可以将其与ContextMenuStrip一起使用,后者是mnu itms的父控件。因此,我为每个ToolStripMenuItem的MouseEnter和MouseLeave事件添加了处理程序,并使用它们来显示/隐藏每个MNU项的ToolTipText。这在很大程度上摆脱了弹出问题。虽然偶尔会有一些奇怪的行为,但这是一个可行的解决方案。

代码语言:javascript
复制
Sub LoadMenus(acct As ToolStripMenuItem)
    AddHandler acct.MouseEnter, AddressOf EMToolTipShow
    AddHandler acct.MouseLeave, AddressOf EMToolTipHide
End Sub
Private Sub EMToolTipShow(sender As Object, e As EventArgs)
    ttpEM.Show(sender.ToolTipText, sender.GetCurrentParent())
End Sub
Private Sub EMToolTipHide(sender As Object, e As EventArgs)
    ttpEM.Hide(sender.GetCurrentParent())
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65444588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档