当鼠标悬停在我的某个应用程序表单上时,我需要有关如何隐藏光标的帮助。我知道代码分别是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中的解决方案是可以接受的。
答案 0 :(得分:5)
建议在表单构造函数中使用Cursor.Hide();
。
将此应用于表单本身不起作用
当你离开应用程序的领域时,我不认为你将不得不关心光标。表单初始化的时候把代码放在那里。
public Form1()
{
InitializeComponent();
Cursor.Hide();
}
另一种推荐方法是迭代控制集合,即
foreach(Control c in this.Controls)
{
c.Cursor.Hide();
}
答案 1 :(得分:0)
你这样说:@msarchet我认为问题在于,在循环中,当鼠标在控件上时,会调用control_MouseEnter(隐藏光标),但在此之前,鼠标刚刚离开另一个控件,显示光标。总之,可能同时调用这两个事件,因此似乎总是显示光标。正是我的想法
如果您认为这是问题,请不要使用cursor.show来保留所有控件,您只希望它在离开面板时显示。在面板上设置cursor.show和cursor.hide,所有其他控件只需一个cursor.hide。