2013-05-05 55 views
2

我正在使用.NET 4.0 CP在C#中开发Winforms应用程序。现在它处于beta测试阶段,我正在测试运行Windows的各种系统上的应用程序。 Win 7和8的运行效果很好,但XP真的开始让我感到紧张。C#:Cursor.Hide()无法在XP上工作

显然,只出现在XP上的最新bug是使用Hide()方法不隐藏光标。我试图在画框上绘制自己的光标,如示例所示:

private void pictureBox_MouseEnter(object sender, EventArgs e) 
{ 
    Cursor.Hide(); 
} 

private void pictureBox_MouseLeave(object sender, EventArgs e) 
{ 
    Cursor.Show(); 
} 

private void pictureBox_Paint(object sender, PaintEventArgs e) 
{ 
    //draw some cursor... 
} 

它的工作方式应该尽可能远,因为它不能在Win XP上运行。

可能是什么问题? .NET 4.0应该可以在XP上工作,但我一直在遇到新的错误。我试着谷歌一些建议,但还没有遇到任何有用的东西。谢谢你的回答。

+0

对此没有简单的解释。显示和隐藏都被计算在内,一个显示调用和隐藏太多将不起作用。哪些可以通过我们看不到的其他代码完成。将一些Trace()语句添加到您的代码中。 – 2013-05-05 21:38:15

+0

@HansPassant我在我的代码中使用隐藏和显示在其他几个地方,但它们从不交错,因此不会有两次或多次隐藏(或显示)连续调用的机会。当光标被隐藏时,它必须在再次隐藏之前显示。 – SysGen 2013-05-06 16:52:29

+0

SO用户通常会遇到麻烦,并在他们的假设无效时发布问题。我怀疑你在其他地方打过Show/Hide,但我们当然看不到他们,也猜不出他们如何以意想不到的方式进行互动。按照我的建议添加跟踪,也可以使用计数器。 – 2013-05-06 16:57:46

回答

0

尝试,如果

this.Refresh(); 

帮助...

+0

感谢您的回答,但不幸的是,这并没有帮助。我也尝试刷新pictureBox,但这也不是好。 – SysGen 2013-05-05 14:45:22

0

以下平台由Cursor.Hide支持()函数:

的Windows 98,Windows 2000 SP4的,Windows CE的Windows尖端版,用于Pocket PC的Windows Mobile,用于智能手机的Windows Mobile,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP简化版

因此,它不适用于正常的Windows XP计算机,只能安装SP2,初学者版和x64专业版。

+0

Downvoter谨慎解释? – Max 2013-05-06 14:41:29

+0

感谢您的回答,您究竟在哪里找到这些信息?然而,问题仍然存在,我已经在各种XP版本上测试了各种SP的应用程序,但它在任何地方都无法正常工作。 – SysGen 2013-05-06 15:55:04

+0

在msdn游标类,但你使用什么框架? – Max 2013-05-06 15:58:05

相关问题