C# mouseenter和mousehover有什么区别?

C# mouseenter和mousehover有什么区别?,c#,C#,在C#Windows应用程序中,有两个不同的鼠标事件,MouseEnter和MouseHover,当光标位于对象上时,这两个事件都会触发 它们之间的区别是什么?是当鼠标刚进入该区域时 鼠标停留一段时间(通常用于工具提示) 就鼠标事件而言,MouseEnter事件发生在任何其他事件之前。此外,您还可以手动设置在触发MouseHover事件之前,鼠标必须在该区域停留多长时间。你可以了解更多 编辑:我更改了调整鼠标超时的链接。结果是,您无法轻松地执行此操作,强烈建议不要执行此操作,因为这是一个系统值,

在C#Windows应用程序中,有两个不同的鼠标事件,
MouseEnter
MouseHover
,当光标位于对象上时,这两个事件都会触发

它们之间的区别是什么?

是当鼠标刚进入该区域时

鼠标停留一段时间(通常用于工具提示)

就鼠标事件而言,
MouseEnter
事件发生在任何其他事件之前。此外,您还可以手动设置在触发
MouseHover
事件之前,鼠标必须在该区域停留多长时间。你可以了解更多


编辑:我更改了调整鼠标超时的链接。结果是,您无法轻松地执行此操作,强烈建议不要执行此操作,因为这是一个系统值,将影响机器上的所有应用程序。相反,新链接显示如何使用新的、特定于应用程序的变量手动执行此操作。

假设您使用的是Windows窗体:

出现鼠标输入:

当鼠标指针进入控件时发生

()

鼠标悬停:

当鼠标指针停留在控件上时发生

鼠标悬停的典型用途是在鼠标悬停时显示工具提示 在控件周围指定区域内的控件上暂停( “悬停矩形”)。引发此事件所需的暂停为 由MouseHoverTime属性以毫秒为单位指定

()

要全局设置鼠标超时(不推荐,请参阅@IronMan84的链接以获得更好的解决方案),您可以使用
系统参数info
功能。因为这是一个Win32 API调用,所以您需要PInvoke:

[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SystemParametersInfo(SPI uiAction, uint uiParam, IntPtr pvParam, SPIF fWinIni);
称为:

SystemParametersInfo(SPI.SPI_SETMOUSEHOVERTIME, 
                     desiredHoverTimeInMs, 
                     null, 
                     SPIF.SPIF_SENDCHANGE );
来自PInvoke.NET的Sigantures:

我没有在这里包含
Enum
签名,因为它们太长了。只需使用PInvoke.Net上的那些(链接在上面)


有关SystemParametersInfo API调用及其参数的完整信息,请参阅。

我认为鼠标悬停是指鼠标在目标上停留一段时间,想想工具提示这是一个非常容易搞错的问题。这是一个奇怪的计票方式,无论是毫无价值的问题还是答案@我在猜答案。时间决定一切。如何设置mousehothero属性?@IbrahimHero有几种方法。铁人的链接也是我发现的。您似乎还可以更改注册表项以在系统范围内设置它。通常,应避免更改此值。谷歌搜索“设置鼠标超时时间”会显示相关页面。我知道我很愚蠢,除了铁人的链接对我没有多大用处……你能举一个关于如何设置鼠标超时时间的直接例子吗?@IbrahimHero Done。由于您不喜欢另一个链接,我发布了一个全局API调用示例。正如您所知,我借用了您的链接作为设置
鼠标超时时间的“正确”方法,因为OP坚持使用不同的方法。我会用你的方式:)我完全理解。谢谢你的呼喊。