C# C“工具提示未出现在”上;“显示”;

C# C“工具提示未出现在”上;“显示”;,c#,winforms,tooltip,C#,Winforms,Tooltip,为了满足要求,我必须手动显示工具提示30秒。根据msdn,我只需要使用“Show”方法 但我只得到标准的工具提示行为,这意味着消息在我单击后半秒出现(只是因为鼠标指针仍在按钮上方)。我尝试了一些变化,比如 toolTip.Show(QuestionHelpText, btnHelp); 但仍然没有发生任何事情 有人知道这是为什么吗 谢谢在哪里声明“工具提示” MSDN没有指出(在上)Show方法是一个阻塞调用,因此如果您在方法中声明工具提示,然后直接退出该方法,那么工具提示将超出范围,导致它无

为了满足要求,我必须手动显示工具提示30秒。根据msdn,我只需要使用“Show”方法

但我只得到标准的工具提示行为,这意味着消息在我单击后半秒出现(只是因为鼠标指针仍在按钮上方)。我尝试了一些变化,比如

toolTip.Show(QuestionHelpText, btnHelp);
但仍然没有发生任何事情

有人知道这是为什么吗

谢谢

在哪里声明“工具提示”


MSDN没有指出(在上)Show方法是一个阻塞调用,因此如果您在方法中声明工具提示,然后直接退出该方法,那么工具提示将超出范围,导致它无法呈现或消失。

我知道一个简单的解决方法

在按钮附近放置一个带有空文本的标签(我们将其命名为labelHelp

下面的代码应该可以工作

    private void btnHelp_Click(object sender, EventArgs e)
    {
        toolTip.Show(QuestionHelpText, labelHelp, 3000);
    }

我认为您需要设置工具提示的initialDelay属性

工具提示用于usercontrol,因此InitializeComponent中的声明将适用于任何控件。罗布说更正工具提示。显示的是阻塞方法。因此,当它在同一控件的事件处理程序(即在btnHelp_Click)中使用时,它将无法按预期工作。诀窍是调用不同控件的toolTip.Show。另一个解决方案可能是使用计时器并启动toolTip.Show AsynchroneoSuly(例如,在btnHelp_中,单击启动计时器0.1秒,然后在计时器事件中调用toolTip.Show)。对我来说,使用第二个控件似乎是一个最简单的解决方法。我在另一个控件的不同处理程序中使用了它,但仍然没有显示OK。它对我不起作用的原因是我在
form\u load
事件中使用了它。所以我把它改为
form_show
,现在我甚至不需要标签控件来帮助我。现在很好用。
    private void btnHelp_Click(object sender, EventArgs e)
    {
        toolTip.Show(QuestionHelpText, labelHelp, 3000);
    }