我有一个ListView,其中有几个项目的文本多于列宽度.ShowItemToolTips意味着我可以将鼠标悬停在列上并查看完整的文本.
然而,对于很长的文本,它会在有时间阅读所有内容之前消失,所以我想让它保持更长时间(或者可能直到手动解散,例如通过移开鼠标或点击.我该怎么做?
当然,您知道.NET ListView类下面是Windows列表视图控件.此listview控件使用Windows工具提示控件来显示截断的字符串.
您可以通过LVM_GETTOOLTIPS消息获取此基础工具提示控件.
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg,
int wParam, int lParam);
public IntPtr GetTooltipControl(ListView lv) {
const int LVM_GETTOOLTIPS = 0x1000 + 78;
return SendMessage(lv.handle, LVM_GETTOOLTIPS, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
获得工具提示控件的句柄后,您可以向其发送消息.
public void SetTooltipDelay(ListView lv, int showTime) {
const int TTM_SETDELAYTIME = 0x400 + 3;
const int TTDT_AUTOPOP = 2;
IntPtr tooltip = this.GetTooltipControl(lv);
if (tooltip != IntPtr.Zero) {
SendMessage(tooltip, TTM_SETDELAYTIME, TTDT_AUTOPOP, showTime);
}
}
Run Code Online (Sandbox Code Playgroud)
showTime是您希望控件保持可见的毫秒数.