winforms 如何在ToolStripButton上使用工具提示

h7wcgrx3  于 2023-10-23  发布在  其他
关注(0)|答案(4)|浏览(205)

我尝试将工具提示应用到toolstripbutton,但它一直给我这个错误:
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);
        }
    }
}
jaql4c8m

jaql4c8m1#

ToolStripButton派生自ToolStripItem,它具有ToolTipText属性。
如前所述,ToolStripItem并不是从Control类派生的,因此提供了自己的实现来呈现工具提示。This post可以帮助您自定义工具提示。

pnwntuvh

pnwntuvh2#

更新:在Winform项目中尝试了这个方法,但没有成功,我在SO上搜索了其他线程,这可能对你有帮助:
Showing a tooltip on a non-focused ToolStripItem
第一种方法的问题是你不能直接将其设置为按钮,它不是从Control继承的,除非你在条带上而不是在按钮上,否则工具提示不会显示。
其他地方
我试着做同样的事情,并确定这将是相当具有挑战性的,不值得。原因是,在内部,.NET代码是专门设计的,只有在窗口处于活动状态时才显示工具提示-他们在Win32级别检查这一点,所以很难伪造代码。
用户从来没有接受任何答案为真,而且乍一看,这可能是一个很大的工作,很少的回报。这是一个从零开始的项目吗?如果是这样的话,也许你可以使用WPF来做,它比winforms灵活得多。

kyks70gy

kyks70gy3#

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

lb3vh1jj

lb3vh1jj4#

这是一个老问题,但答案是here
1.将按钮的ShowItemToolTips属性设置为true。
1.将按钮的ToolStripButton.AutoToolTip属性设置为false。

  • ToolStripButton的AutoToolTip属性默认为true。ToolStripDropDownButton和ToolStripSplitButton。*
  • ToolStripButton默认使用其Text属性作为ToolTip文本。使用此过程可在ToolStripButtonToolTip中显示自定义文本。*

相关问题