场景:WinForm项目中,有些文档内容太长,在文本框中放不下,所以超过特定长度的文本显示省略号。当鼠标滑过文本框时,鼠标旁出现小气泡显示文本的完整内容。
#region 气泡展示文本框内容
private bool isToolTipVisible = false;
private void txt_technicalRequirement_MouseMove(object sender, MouseEventArgs e)
{
// 使用Graphics类来测量文本宽度
using (Graphics g = txt_technicalRequirement.CreateGraphics())
{
// 获取文本框中的文本长度和测量后的文本宽度
SizeF size = g.MeasureString(myData.TechnicalRequirement, txt_technicalRequirement.Font);
// 检查文本是否超出了文本框的宽度
if (size.Width > txt_technicalRequirement.ClientSize.Width)
{
// 如果超出,设置ToolTip的文本为完整文本
toolTip1.SetToolTip(txt_technicalRequirement, myData.TechnicalRequirement);
isToolTipVisible = true;
}
else
{
// 如果没有超出,不显示ToolTip
if (isToolTipVisible)
{
toolTip1.SetToolTip(txt_technicalRequirement, string.Empty);
isToolTipVisible = false;
}
}
}
}
private void txt_technicalRequirement_MouseLeave(object sender, EventArgs e)
{
// 当鼠标离开文本框时隐藏 ToolTip
if (isToolTipVisible)
{
toolTip1.Hide(txt_technicalRequirement);
isToolTipVisible = false;
}
}
#endregion
上述代码即可实现鼠标滑过文本时出现气泡显示所有内容的效果。