我有一些验证码,当输入错误值时,它应显示控件的最大/最小值。
在我的构造函数中,我这样做:
m_wndToolTip = gcnew ToolTip(this->components);
m_wndToolTip->AutoPopDelay = 5000;
m_wndToolTip->InitialDelay = 10;
m_wndToolTip->ReshowDelay = 250;
m_wndToolTip->ShowAlways = true;// Force the ToolTip text to be displayed whether or not the form is active.
这是我的验证反映代码:
void MyGUI::IndicateValidationResult(Windows::Forms::Control^ control, bool isValid, String^ invalidReason)
{
// If the validation failed, make the background red. If not, turn it white.
if( isValid )
{
control->BackColor = Drawing::Color::White;
m_wndToolTip->Hide(control);
}
else
{
control->BackColor = Drawing::Color::LightCoral;
m_wndToolTip->Show(invalidReason, control);
}
}
...在我的文本框中从varous ValueChanged
方法调用。我尝试过使用show以及SetToolTip
和active = true
的组合,似乎没有任何效果。
我见过another question asking about tooltips并尝试在显示的调用中设置附近的标签,但这也没有解决。工具提示是我的System::Windows::Forms::Form
派生形式的成员变量,以阻止它超出范围。
我错过了一些明显的东西吗?
答案 0 :(得分:1)
我尝试时你的代码运行正常,没有明显的错误,我可以看到。我这样调用它,使用文本框的Validating事件:
bool ok;
System::Void textBox1_Validating(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) {
e->Cancel = !ok;
IndicateValidationResult(textBox1, ok, "invalid");
ok = !ok;
}
请注意ToolTip可能会变得暴躁。本机Windows组件具有“功能”,可防止工具提示在超时之前再次显示。 ErrorProvider组件是一个更好的鼠标陷阱来完成这项工作。