0

有一个简单的表单,在一个位置有一个 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 上快速变化,但它会立即翻转回默认光标。我必须添加"this.Canvas.Cursor = Cursors.Cross;"到 MouseMove 事件才能使其工作,但是我可以不断看到它闪烁回默认光标。

是什么赋予了?这是我整个应用程序中唯一与光标相关的代码,是什么导致它在每次移动鼠标时重置为默认光标?

谢谢。

编辑:我是个白痴。我在这个小应用程序上与之合作的人有一些光标代码隐藏在导致问题的其他地方。多谢你们。

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 回答