gpt4 book ai didi

c# - 菜单项的工具提示被子菜单下拉列表隐藏

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:22 25 4
gpt4 key购买 nike

我有一个 winforms ContextMenuStrip,它的所有 ToolStripMenuItem 都设置了 ToolTipText。

这些菜单项之一“插入操作”具有关联的 ToolStripDropDown 子菜单。当鼠标移动到 Insert Action 时,下拉菜单会自动显示,并且会显示与 Insert Action 关联的工具提示,但会被推到 ContextMenuStrip 和下拉菜单后面的背景中。

请在此处查看问题图片:http://www.screencast.com/t/GZkeBNcU

我曾尝试在打开子菜单后以编程方式重新选择“插入操作”,但工具提示不会重新显示在顶部。

有什么想法吗?

或者,有没有一种方法可以仅在单击时显示“插入操作”的子菜单(而不是在鼠标移到它上面时自动显示)?我认为应该有一个设置,但一直找不到。

感谢您的帮助。

最佳答案

好吧,这不是很优雅,所以请耐心等待。

似乎 ToolTipText 最初是在顶部绘制的,但是一旦加载下一个 ToolStripMenuItems(在您的情况下由“插入操作”带来的那些),两组 MenuStrip 都会找到它们在 ToolTipText 上方的方式。因此,我的动机是强制 ToolTipText 在新的 MenuStrip 加载后出现。

因此,首先我向 myToolStripMenuItem 添加了一个 DropDownOpened 处理程序,它可以是您命名为“Insert Action...”MenuItem 的任何名称。

然后,我添加了以下代码

private void myToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
{
myToolStripMenuItem.Visible = false;
myToolStripMenuItem.Visible = true;
myToolStripMenuItem.ToolTipText = "Tooltip info that you want to see!";
}

它所做的是等待子菜单加载,切换 myToolStripMenuItem 的可见性(这是所有这一切中丑陋的部分),并重置 ToolTipText,强制它在所有内容加载后显示,并在顶部显示一切。

但是,如果您尝试悬停并离开两次或更多次,保持这种状态会导致一些文本闪烁。仅使用这段代码试一试,您就会明白我的意思。因此,您必须将 ToolTipText 重置为空字符串。我在同一 MenuItem 的 DropDownClosed 事件触发时执行了此操作。

private void myToolStripMenuItem_DropDownClosed(object sender, EventArgs e)
{
myToolStripMenuItem.ToolTipText = "";
}

现在,ToolTipText 会准确地出现在我们希望它出现的时间和位置,而不会闪烁。

注意:此方法会导致 ToolTipText 的显示时间比正常情况稍长。当然,这是因为代码等待下拉菜单加载。此外,切换 myToolStripMenuItem.Visible 有时会导致菜单闪烁。但是,我觉得这比显示您不太清楚的 ToolTipText 要好得多。

关于c# - 菜单项的工具提示被子菜单下拉列表隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4987315/

25 4 0