Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何增加WinForms中ListViewItems的AutoOpDelay值?_C#_.net_Winforms_Listview_Tooltip - Fatal编程技术网

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;
    }
但它的行为很奇怪。实际上,工具提示的文本总是过时的。

致Hans Passant

我在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);
}

MouseHover在每个控件中触发一次,因此在移动到不同的项目时,它永远不会更新

使用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;

您可以使用获取
列表视图的
工具提示
,然后向工具提示发送一条消息,并通过将
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传递来设置其延迟。使用一个工具提示来处理所有项目的工具提示。MouseHover事件和ListView.GetItemAt()是必需的。您可以增加显示时间。您可以使用
LVM_GETTOOLTIPS
获取ListView的工具提示,然后向工具提示发送
TTM_SETDELAYTIME
消息,并通过将
TTDT_autotop
作为wparam传递,以毫秒为单位将延迟作为LPRAM传递来设置其延迟。这适用于显示的第一个工具提示,但不会显示额外的工具提示。是什么阻止它在每次鼠标悬停时显示?这适用于显示的第一个工具提示,但不会显示其他工具提示。是什么阻止它在每次鼠标悬停时显示?