C#获取ListBox中item的宽度

  有时候ListBox中item的内容长度超出了ListBox的范围,使得item内容显示不完整。为了能看到item的完整内容,又不想使用滚动条的话,可以使用ToolTip来为item添加一个提示信息,当item内容长度超过ListBox的宽度时,在鼠标旁边显示item的完整内容。

  获取item宽度可以使用如下的方法:

Graphics g = listbox.CreateGraphics();
int itemWidth = (int)g.MeasureString(listbox.Items[hoveredIndex].ToString(), listbox.Font).Width;

其中hoveredIndex 是当前鼠标悬停item对应的索引。

  之后ToolTip的显示就很简单了:

int listWidth = listbox.Width;
if (itemWidth > listWidth)
{
    toolTip.SetToolTip(listbox, tip[hoveredIndex]);
}