【发布时间】:2012-08-20 14:32:40
【问题描述】:
当鼠标悬停在我的一个申请表上时,我需要有关如何隐藏光标的帮助。我知道 MouseEnter 和 MouseLeave 事件的代码分别是 Cursor.Hide() 和 Cursor.Show() 。将此应用于表单本身不起作用。所以我插入了一个面板(将其 Dock 属性设置为 Fill)来包含其他控件。该代码适用于面板,但当我开始添加控件时,它没有。
我的猜测是我必须将代码应用于每个控件。我的表单上有大约 25 个控件,这看起来相当笨拙。
我的想法是这样的(我很抱歉格式化;我正在用哑机打字):
foreach(Control control in this.Controls)
{
control.MouseEnter += control_MouseEnter;
control.MouseLeave += control_MouseLeave;
}
代码在 FrmScreen_Load 中。但它仍然不起作用。我错过了什么吗?
我正在使用 C#,但 VB.NET 中的解决方案是可以接受的。
【问题讨论】:
-
你的意思是'它仍然不起作用'是for循环没有执行还是你用来显示和隐藏光标的代码不起作用
-
您也可以使用游标编辑器创建空游标文件并将其用作表单游标属性 -
this.Cursor = new Cursor("path to empty cursor file here"); -
@msarchet 我认为问题是在循环中,当鼠标在控件上时,会调用 control_MouseEnter (隐藏光标),但在此之前,鼠标刚刚离开另一个控件显示光标。总而言之,也许这两个事件被同时调用,因此似乎总是显示光标。就是我的想法
-
@Shadow Wizard 我想过这样做。如果没有更好的解决方案,我决定将其作为最后的手段