如何为我较长的控制文本设置就地工具提示,如下所示:
我已经使用ToolTip.Show方法
使用了这种类型的工具提示ToolTip ttpInplace = new ToolTip();
ttpInplace.Show(textbox1.Text, textbox1, 0, 0, 4000);
private void FormToolPopup_MouseEnter(object sender, EventArgs e)
{
if (ttpCustomToolTip != null)
{
ttpCustomToolTip.Hide(textBox1);
}
}
private void textBox1_MouseEnter(object sender, EventArgs e)
{
Size s = TextRenderer.MeasureText(textBox1.Text, textBox1.Font);
if (s.Width > textBox1.Width)
{
ttpCustomToolTip.Show(textBox1.Text, textBox1, -4, 0);//, 5000);
}
}
但它闪烁着。 我读过这篇文章 http://msdn.microsoft.com/en-us/library/windows/desktop/hh298402(v=vs.85).aspx 但我有问题要实现,因为它是在C ++中。 任何人都可以帮助我吗?
答案 0 :(得分:5)
是的,它会因为您在与鼠标相同的位置显示工具提示而闪烁。因此工具提示会立即获得鼠标移动消息。这使得提示消失了。这导致MouseEnter事件再次触发。 Etcetera,flickorama。
一种解决方法是捕获鼠标,使其无法向工具提示发送消息:
textBox1.Capture = true;
ttpCustomToolTip.Show(textBox1.Text, textBox1, -4, 0);//, 5000);
用户单击鼠标时会自动取消捕获。可能足够好,你可能不得不把它设置回假。要看。最好的办法是实现MouseMove事件,并在看到它移动到控件之外时取消工具提示和捕获。您还必须做一些事情来使文本框可用,您的工具提示阻止访问。至少有一个原因,你不经常看到这个使用。如果不打算编辑,请务必使用标签。请注意其AutoEllipsis属性。