当鼠标悬停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);
}
}
有什么想法吗?
答案 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...
}