首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法隐藏ToolTip

无法隐藏ToolTip
EN

Stack Overflow用户
提问于 2017-06-27 23:17:51
回答 1查看 224关注 0票数 0

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

代码语言:javascript
复制
ToolTip^ toolTip_patterns = gcnew ToolTip;
String^ caption;

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

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

代码语言:javascript
复制
ToolTip^ toolTip_patterns = gcnew ToolTip;
toolTip_patterns->RemoveAll();

上面的方法不起作用,所以我尝试了下面的方法。这也没用。

代码语言:javascript
复制
toolTip_patterns->Hide(this->textBox_patternsTer);

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

谢谢!

如果这不是键入更新的正确位置,则为Update...Sorry。

谢谢你的建议,但不管用。我从表单设计器将一个ToolTip控件添加到我的表单中,现在我的每个控件都有一个名为ToolTip on toolTip_patterns的属性。我从HelpRequest事件中删除了下面的声明。

代码语言:javascript
复制
ToolTip^ toolTip_patterns = gcnew ToolTip 

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

代码语言:javascript
复制
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);

我也尝试了下面的非模态形式。

代码语言:javascript
复制
        toolTip_patterns->SetToolTip((TextBox^)sender, caption);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 10:17:12

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

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

代码语言:javascript
复制
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
}

然后

代码语言:javascript
复制
void doMouseLeave()
{
    toolTip_patterns->Show("", this->textBox_patternsTer)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44791378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档