我有一個WinForms應用程序和一個用戶控件,其中我根據其位置動態更改光標。創建我的自定義光標作爲用戶控制的靜態成員,像這樣:光標未在Windows窗體中更新
private static Cursor _openHandCursor = new Cursor(Properties.Resources.openHand.Handle);
然後在OnMouseMove
覆蓋我設置相應光標,就像這樣:
this.Cursor = <some condition> ? _openHandCursor : Cursors.Default;
當我啓動應用程序,它工作正常。但是,在幾次光標更改(大約20)之後,它會保留默認(箭頭)位圖,並且不會再進行更改。但最奇怪的是,在發生這種情況後,我檢查當前Cursor
值的Handle
屬性,它等於_openHandCursor
對象的句柄!所以看起來屬性的值仍然被正確設置,但屏幕上的光標位圖不會被更新。有關這種奇怪行爲的任何建議?
這個代碼有些神祕。遊標作爲byte []嵌入到資源中,而不是任何具有Handle屬性的東西。手動編輯Resources.Designer.cs文件嗎? –
@HansPassant查看我的評論@ max的答案 - 我最初使用的資源是一個Icon。 –