Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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# 在我的窗体上隐藏光标_C#_Winforms - Fatal编程技术网

C# 在我的窗体上隐藏光标

C# 在我的窗体上隐藏光标,c#,winforms,C#,Winforms,我需要帮助如何隐藏光标时,鼠标是在我的一个申请表。我知道MouseEnter和MouseLeave事件的代码分别是Cursor.Hide()和Cursor.Show()。将此应用于表单本身不起作用。因此,我插入了一个面板(将其Dock属性设置为Fill)以包含其他控件。该代码适用于面板,但当我开始添加控件时,它就不起作用了。 我的猜测是,我必须将代码应用于每个控件。我的表单上有大约25个控件,这看起来相当笨拙。 我的想法是这样的(很抱歉格式化了;我是在一部哑铃电话上输入的): 代码在FrmScr

我需要帮助如何隐藏光标时,鼠标是在我的一个申请表。我知道MouseEnter和MouseLeave事件的代码分别是Cursor.Hide()和Cursor.Show()。将此应用于表单本身不起作用。因此,我插入了一个面板(将其Dock属性设置为Fill)以包含其他控件。该代码适用于面板,但当我开始添加控件时,它就不起作用了。
我的猜测是,我必须将代码应用于每个控件。我的表单上有大约25个控件,这看起来相当笨拙。
我的想法是这样的(很抱歉格式化了;我是在一部哑铃电话上输入的):

代码在FrmScreen_加载中。但它仍然不起作用。我错过什么了吗

我在C#中工作,但是VB.NET中的解决方案是可以接受的。

建议在表单构造函数中使用

将此应用于表单本身不起作用

我认为,当你离开应用程序的领域时,你永远不必关心游标。表单初始化时,把代码放在那里

public Form1()
        {    
            InitializeComponent();
            Cursor.Hide();
        }
另一种推荐的方法是遍历控件集合,即

foreach(Control c in this.Controls)
{
  c.Cursor.Hide();
}

您说过:@msarchet我认为问题在于,在循环中,当鼠标位于控件上时,会调用control_MouseEnter(隐藏光标),但在此之前,鼠标刚刚离开另一个显示光标的控件。总之,这两个事件可能同时被调用,因此光标似乎总是显示出来。我就是这么想的


如果您认为这是问题所在,请不要在离开所有控件时执行cursor.show,您只希望它在离开面板时显示。在面板上设置cursor.show和cursor.hide,所有其他控件只获得cursor.hide。

什么意思“它仍然不工作”是for循环未执行,还是用于显示和隐藏光标的代码不工作?您还可以使用光标编辑器创建空光标文件,并将其用作表单光标属性-
this.Cursor=新光标(“此处指向空光标文件的路径”)
@msarchet我认为问题在于,在循环中,当鼠标位于控件上时,会调用control\u MouseEnter(隐藏光标),但在此之前,鼠标刚刚离开另一个显示光标的控件。总之,这两个事件可能同时被调用,因此光标似乎总是显示出来。正如我所想think@Shadow巫师,我想过要这么做。如果没有更好的解决方案,我决定做最后的选择。实际上,我在应用程序中同时显示两个表单。在构造函数中设置~Cursor.Hide()~也会在另一个窗体上隐藏光标。在另一个窗体上设置Cursor.show怎么样。也许这个.cursor.show()应该适用于form2。如果你读得很好,那是我的第一次尝试。它只有在面板中没有控件时才起作用(这是无用的)。我想你需要重新阅读我说的话。您从未提到只在所有控件上放置cursor.hide,并且仅在面板上同时放置cursor.hide和cursor.show。你说你试着把两个都放在面板上,然后试着把两个都放在所有的控件上。我不是说其中任何一个。我是说把cursor.hide和cursor.show事件放在面板上,只把cursor.hide事件放在其他控件上。我现在明白了。但是在Cursor.Hide()上的MSDN页面(抱歉,我现在没有链接),有一个合理的警告,应该有一个对应的Cursor.Show()。我认为他们是对的,因为有时候光标不会被隐藏,而有时候它会被隐藏。好吧,这只是一个想法。面板的cursor.show应该能够处理它。
foreach(Control c in this.Controls)
{
  c.Cursor.Hide();
}