2013-05-05 54 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

相關問題