0

1 つの場所に PictureBox がある単純なフォームを作成します。そのコントロールに入るときにカーソルをクロスカーソルに変更し、離れるときにカーソルを元に戻したいです。

private void Canvas_MouseEnter(object sender, EventArgs e)
    {
        this.Canvas.Cursor = Cursors.Cross;
    }

    private void Canvas_MouseLeave(object sender, EventArgs e)
    {
                    this.Canvas.Cursor = Cursors.Default;
    }

これはうまくいきません。よく見ると、MouseEnter ですぐに変化するのがわかりますが、デフォルトのカーソルに戻ってしまいます。動作させるには、MouseMove イベントに追加"this.Canvas.Cursor = Cursors.Cross;"する必要がありますが、そうすると常にデフォルトのカーソルにちらつきます。

何を与える?これは私のアプリケーション全体で唯一のカーソル関連のコードです。マウスを動かすたびにデフォルトのカーソルにリセットされる原因は何ですか?

ありがとう。

編集:私はばかです。この小さなアプリで私が協力している人は、問題を引き起こしているカーソルコードを別の場所に隠していました。みんなありがとう。

4

3 に答える 3

2

ピクチャーボックスにカーソルを設定してみませんか?

yourPictureBox.Cursor = Cursors.Cross;
于 2012-10-05T19:49:11.467 に答える
0

新しいプロジェクトをゼロから試してみましたが (mouseenter/leave ハンドラーのみで、他には何もありません)、動作します。

あなたのアプリケーションで何か他のものかもしれませんか?

于 2012-10-05T19:48:14.510 に答える
0
public Form1()
{
  InitializeComponent();
  pictureBox1.MouseHover += new EventHandler(PictureBox1_MouseHover);
}

void pictureBox1_MouseHover(object sender, EventArgs e)
{
  this.PictureBox1.Cursor = Cursors.Cross;
}

MouseHoverイベントハンドラ を使用したい。

于 2012-10-05T19:51:19.157 に答える