无法隐藏工具提示

时间:2017-06-27 23:17:52

标签: c++ winforms tooltip

我通过在HelpRequested事件中包含以下代码为文本框创建了一个工具提示。

ToolTip^ toolTip_patterns = gcnew ToolTip;
String^ caption;

caption = "Help the user blah blah...";
toolTip_patterns->Show(caption, this->textBox_patternsTer);

当用户离开文本框时,我希望工具提示消失。除非用户再次按F1,否则不应显示。我试图在Leave事件中使用下面的代码隐藏工具提示。

ToolTip^ toolTip_patterns = gcnew ToolTip;
toolTip_patterns->RemoveAll();

以上不起作用,所以我尝试了以下内容。这也不起作用。

toolTip_patterns->Hide(this->textBox_patternsTer);

当我使用Method(RemoveAll或Hide)时,当用户离开文本框时,工具提示会消失,但当鼠标悬停在文本框上时会返回。我在MouseHover事件中没有任何代码。为什么这样做?

谢谢!

更新...抱歉,如果这不是输入更新的正确位置。

感谢您的建议,但它不起作用。我从表单设计器向表单添加了一个ToolTip控件,现在我的每个控件都在toolTip_patterns上有一个名为ToolTip的属性。我从HelpRequest事件中删除了下面的声明。

ToolTip^ toolTip_patterns = gcnew ToolTip 

我使用下面的代码设置要显示的文本。

private: System::Void textBox_patterns_HelpRequested(System::Object^  sender, System::Windows::Forms::HelpEventArgs^  hlpevent)
     {
        String^ caption;
        String^ module;

        if (sender == textBox_patternsTer)
            module = "Terminator";
        else if (sender == textBox_patternsSec)
            module = "Secondary";
        else if (sender == textBox_patternsPri)
            module = "Primary";
        else
            return; // No help for selected control.

        caption = "Enter 32 bit Hex patterns for the " + module + " one pattern per line.\n";

        toolTip_patterns->InitialDelay = 0; //< immediately show help
        toolTip_patterns->Show(caption, (TextBox^)sender);

我也试过下面的非模态表格。

        toolTip_patterns->SetToolTip((TextBox^)sender, caption);

工具提示显示正常,当我将焦点移动到另一个控件并按F1时,将显示第二个控件的工具提示。问题是当我将鼠标悬停在第一个控件上时,会显示第一个控件的工具提示。我不希望在用户退出控件后显示工具提示。 Hide()方法不起作用,RemoveAll()方法不起作用,并将标题设置为“”不起作用。知道我做错了什么吗?感谢。

1 个答案:

答案 0 :(得分:0)

我倾向于在用户请求帮助时设置文本,然后在鼠标离开时清除它。

请注意,您需要在帮助请求调用和鼠标离开之间保留指向工具提示的指针,而不是每次调用请求帮助时分配一个新指针。如果你不这样做,你将无法处理对象并能够对其进行操作。

ToolTip^ toolTip_patterns = gcnew ToolTip;

void doHelpRequest()
{
    String^ caption;

    caption = "Help the user blah blah...";
    toolTip_patterns->Show(caption, this->textBox_patternsTer)
    toolTip_patterns->InitialDelay = 0; //< immediately show help
}

然后

void doMouseLeave()
{
    toolTip_patterns->Show("", this->textBox_patternsTer)
}