在Winforms Listview中显示带有图标和标题的工具提示(仅在修剪文本时)

时间:2013-08-02 15:20:11

标签: c# winforms listview tooltip

当鼠标悬停ListViewSubItem时,我需要显示带有图标,标题和文本的工具提示。但是工具提示只有在单元格的基础文本用省略号修剪时才会弹出

到目前为止,我有以下代码:

private void ListView_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e)
{
    if (e.Item != null)
    {
        // get last subItem
        ListViewItem.ListViewSubItem mySubItem = e.Item.SubItems[item.SubItems.Count - 1];

        // TODO -> how to check if text is trimmmed?
        // e.g. "This is the displayed text in the subitem whi..."

        //if (mySubItem.IsTrimmed???)
        {
            // mToolTip is an instance of ToolTip class
            mToolTip.ToolTipIcon = // any icon...
            mToolTip.ToolTipTitle = "some title text";
            mToolTip.SetToolTip(ListView, "some body text");
        }
    }
    else
    {
        mToolTip.Hide(ListView);
    }
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

要制作自定义工具提示框,我认为您必须放弃ToolTip。而是使用所需的布局创建Panel,然后在需要显示时更改Location的{​​{1}}。您还可以添加某种动画来“滑动”Panel到视图或其他内容。在Panel中加载所需信息,然后显示,然后显示。

至于检测Panel中的文字,有一个ListViewItem事件可以解决问题。

答案 1 :(得分:1)

首先测量绘制字符串的大小:

float realWidth;
using (Graphics g = listView.CreateGraphics()) {
    realWidth= g.MeasureString(mySubItem.Text, mySubItem.Font).Width;
}

并查明它是否大于当前大小:

if (mySubItem.Bounds.Width > realWidth) {
    // Show tool tip...
}