【问题标题】:How to use tooltip on toolstripbutton如何在工具条按钮上使用工具提示
【发布时间】:2012-06-25 14:57:44
【问题描述】:

我正在尝试将工具提示应用于工具条按钮,但它一直给我这个错误:

Operator '==' cannot be applied to operands of type 'System.Windows.Forms.Control' and 'System.Windows.Forms.ToolStripButton'

关于如何解决这个问题的任何线索?

更新:

private void toolTip1_Popup(object sender, PopupEventArgs e)
{
    if (e.AssociatedControl == tBtn1)
    {
        using (Font f = new Font("Tahoma", 9))
        {
            e.ToolTipSize = TextRenderer.MeasureText(
                toolTip1.GetToolTip(e.AssociatedControl), f);
        }
    }
}

【问题讨论】:

  • 你能添加引发异常的代码吗?
  • 您在什么情况下收到此错误。发布给您带来问题的代码...
  • 只需将控件转换为它的类型,即工具条按钮
  • 按照@nawfal 对tBtn1 的建议,如[..] ==(ToolStripButton)tBtn1 [...]
  • 忽略该评论,我已将其删除。尝试投射e.AssociatedControl 并告诉我们

标签: c# winforms controls tooltip


【解决方案1】:

ToolStripButton 派生自具有 ToolTipText 属性的 ToolStripItem

如前所述,ToolStripItem 不是从Control 类派生的,因此提供了自己的实现来呈现工具提示。 This 帖子可以帮助您自定义工具提示。

【讨论】:

  • 这有帮助,但他没有给出类的代码,例如:TOOLTIP_XOFFSET、TOOLTIP_YOFFSET 和 toolTipText。
【解决方案2】:

更新:在 Winform 项目中尝试了这个但没有成功后,我搜索了 SO 上的其他线程,这可能对你有帮助:

Showing a tooltip on a non-focused ToolStripItem

第一个的问题是不能直接设置到按钮上, 它不是从 Control 继承的,并且工具提示不会出现,除非 你在条上,但不是在一个按钮上。

其他地方

我试图做同样的事情并确定它会是 很有挑战性,不值得。原因是在内部, .NET 代码专门设计为仅在以下情况下显示工具提示 窗口处于活动状态 - 他们正在 Win32 级别进行检查,因此它的 很难伪造代码。

用户从来没有接受过任何正确的答案,而且乍一看,这可能是很多工作却很少得到回报。这是一个从头开始的项目吗?如果是这样,也许你可以使用 WPF 来做到这一点,它比 winforms 灵活得多。

【讨论】:

  • 我用代码更新了问题。我现在得到的错误是:无法将类型'System.Windows.Forms.ToolStripButton'隐式转换为'System.Windows.Forms.Control'
  • 在没有他发布实际导致问题的代码的情况下,我只能推测可能的原因。我确实要求他更新代码,以便我可以更新答案。
  • @GrayFox374 所以既然你现在理解他的代码,请更新或删除答案。我将取消我的 -1
【解决方案3】:

奇怪的是,toolstripbutton 类不像其他 System.Windows.Forms gui 组件那样继承自 Control 类。也许在您的代码中e.AssociatedControl 旨在与 System.Windows.Forms 控件一起使用。简而言之,我认为 MS 还没有决定为条形控件提供工具提示。我不知道您的确切要求,但对于一些可能会点击的替代方案,请参阅this link

【讨论】:

    猜你喜欢
    • 2014-07-29
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多