我通过在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()方法不起作用,并将标题设置为“”不起作用。知道我做错了什么吗?感谢。
答案 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)
}