カーソルの位置に基づいて動的にカーソルを変更するユーザー コントロールを備えた WinForms アプリケーションがあります。次のように、カスタム カーソルをユーザー コントロールの静的メンバーとして作成します。
private static Cursor _openHandCursor = new Cursor( Properties.Resources.openHand.Handle );
次に、OnMouseMove
オーバーライドで、次のように適切なカーソルを設定します。
this.Cursor = <some condition> ? _openHandCursor : Cursors.Default;
アプリケーションを起動すると、正しく動作します。ただし、カーソルを数回 (約 20 回) 変更した後は、デフォルト (矢印) のビットマップのままで、それ以上変更されません。しかし、最も奇妙なことは、これが発生した後Handle
、現在の値のプロパティを確認すると、オブジェクトCursor
のハンドルと等しいことです! _openHandCursor
したがって、プロパティの値はまだ正しく設定されているようですが、画面上のカーソル ビットマップは更新されません。この奇妙な動作について何か提案はありますか?