1

当鼠标悬停在 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);
    }
}

有任何想法吗?

4

2 回答 2

1

为了制作自定义工具提示框,我认为您将不得不放弃ToolTip. 而是使用您想要的布局创建一个Panel,然后LocationPanel需要显示它时更改 。您还可以添加某种动画以“滑动”Panel到视图或其他内容。加载您想要Panel显示的信息然后显示。

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

于 2013-08-02T15:28:17.070 回答
1

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

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

并找出它是否大于当前大小:

if (mySubItem.Bounds.Width > realWidth) {
    // Show tool tip...
}
于 2013-08-02T18:06:40.003 回答