我在我的表单上使用了一个 ToolTip
控件,但我发现即使我的光标在一个控件上,工具提示也会显示在其他地方。我想在我的光标所在的控件中显示它。
如上图所示,当我的光标位于 Textbox3
上时,工具提示显示在 Textbox4
上。我希望它显示为指向 Textbox3
。
我目前正在使用以下代码在 3 个不同的事件中显示工具提示:
private void txtImmediateddest_Enter(object sender, EventArgs e)
{
ttpDetail.Show("Ex:111000025", txtImmediateddest);
}
private void txtImmediateddest_MouseHover(object sender, EventArgs e)
{
ttpDetail.Show("Ex:111000025", txtImmediateddest);
}
private void txtImmediateddest_MouseUp(object sender, MouseEventArgs e)
{
ttpDetail.Show("Ex:111000025", txtImmediateddest, e.Location);
//toolTipimmeddest.Show("Required & Must be 9 Digits", txtImmediateddest);
}
编辑
private void textBox1_MouseHover(object sender, EventArgs e)
{
ttpDetail.AutoPopDelay = 2000;
ttpDetail.InitialDelay = 1000;
ttpDetail.ReshowDelay = 500;
ttpDetail.IsBalloon = true;
//ttpDetail.SetToolTip(textBox1, "Ex:01(Should be Numeric)");
ttpDetail.Show("Ex : 01(Should Be Numeric)", textBox1,textBox1.Width, textBox1.Height/10,5000);
}
这工作正常但是当鼠标最初放在控件上时它显示正常如果我第二次它显示正确
请看下面的图片
最佳答案
您看到的问题是因为您的ToolTip
控件的IsBalloon
property设置为“真”。设置此属性后,ToolTip
不会更改其相对位置,从而导致气球的箭头指向错误的控件。
这是一个证明这种现象的并排比较:
显然,简单的解决方法是通过将 IsBalloon
属性设置为“False”来禁用它。控件将恢复显示标准的矩形工具提示窗口,该窗口看起来正确对齐。
如果您不能接受,则必须指定希望工具提示气球出现的确切位置。不幸的是,ToolTip
控件中似乎存在错误,导致它在第一次附加到控件时无法正确显示。这通常可以通过使用空字符串调用一次 Show
方法来解决。例如,使用以下代码:
private void txtImmediateddest_Enter(object sender, EventArgs e)
{
ttpDetail.Show(string.Empty, textBox3, 0);
ttpDetail.Show("Ex:111000025", textBox3, textBox3.Width / 2, textBox3.Height, 5000);
}
产生这个结果:
当然,走这条路时您的运气也可能会有所不同。我一般不使用内置的 ToolTip
控件来编辑控件(例如文本框和组合框)。我发现 P/Invoke SendMessage
更可靠, 指定 EM_SHOWBALLOONTIP
和一个 EDITBALLOONTIP
structure包含有关我要显示的工具提示的信息。我将查找适当的定义并编写包装代码作为读者的练习,因为这个答案已经太长了。
关于c# - 为什么不显示指向正确控件的气球提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645614/