C# 如何增加WinForms中ListViewItems的AutoOpDelay值?
您知道,C# 如何增加WinForms中ListViewItems的AutoOpDelay值?,c#,.net,winforms,listview,tooltip,C#,.net,Winforms,Listview,Tooltip,您知道,ListView中的每个项目都有一个ToolTipText属性,仅此而已!没有像autocopdelay这样的属性来设置其显示时间。。。始终为默认值5000毫秒。我尝试将工具提示关联到每个项目,但似乎不可能 对于Hans Passant,ListViewItem的ToolTipText属性是否需要增加显示时间 我在MouseHover事件中使用了以下代码: Point pntOnList = lsvSource.PointToClient (new Point(C
ListView
中的每个项目都有一个ToolTipText
属性,仅此而已!没有像autocopdelay
这样的属性来设置其显示时间。。。始终为默认值5000毫秒。我尝试将工具提示关联到每个项目,但似乎不可能
对于Hans Passant,ListViewItem
的ToolTipText
属性是否需要增加显示时间
我在MouseHover事件中使用了以下代码:
Point pntOnList = lsvSource.PointToClient
(new Point(Cursor.Position.X, Cursor.Position.Y));
ListViewItem lsviUnderMouse =
lsvSource.GetItemAt(pntOnList.X, pntOnList.Y);
if (lsviUnderMouse != null)
{
ttipDetails.SetToolTip(lsvSource, lsviUnderMouse.ToolTipText);
ttipDetails.Active = true;
}
else
{
ttipDetails.Active = false;
}
但它的行为很奇怪。实际上,工具提示的文本总是过时的。鼠标悬停会在每个控件上触发一次,因此在移动到不同的项目时不会更新
使用ListView.ItemMouseHover完成您需要的操作
void listView1_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e)
{
this.toolTip1.SetToolTip(e.Item.ListView, e.Item.ToolTipText);
}
您可以使用获取列表视图的工具提示
,然后向工具提示发送一条消息,并通过将TTDT_autotop
作为wparam传递,将延迟(毫秒)作为lparam传递来设置其延迟
还要确保ListView
的showItemsToAltip
属性已设置为true,并且项目具有工具提示
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
const int LVM_GETTOOLTIPS = 0x104E;
const int TTM_SETDELAYTIME = 0x403;
const int TTDT_AUTOPOP = 2;
private void button1_Click(object sender, EventArgs e)
{
var tooltip = SendMessage(listView1.Handle, LVM_GETTOOLTIPS, 0, 0);
SendMessage(tooltip, TTM_SETDELAYTIME, TTDT_AUTOPOP, 10000 /*milliseconds*/);
}
要设置初始延迟或重新显示延迟,请为wparam设置以下值:
const int TTDT_AUTOMATIC = 0;
const int TTDT_AUTOPOP = 2;
const int TTDT_INITIAL = 3;
使用一个工具提示来处理所有项目的工具提示。MouseHover事件和ListView.GetItemAt()是必需的。您可以增加显示时间。您可以使用LVM_GETTOOLTIPS
获取ListView的工具提示,然后向工具提示发送TTM_SETDELAYTIME
消息,并通过将TTDT_autotop
作为wparam传递,以毫秒为单位将延迟作为LPRAM传递来设置其延迟。这适用于显示的第一个工具提示,但不会显示额外的工具提示。是什么阻止它在每次鼠标悬停时显示?