光标会一直重置为默认值,除非我在MouseMove上进行了设置

问题描述 投票:0回答:4

具有一个简单的表单,该表单在一个位置具有一个PictureBox。我想在进入该控件时将光标更改为Cross光标,并在离开时将其更改回。

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事件中,但随后我会不断看到它闪烁回到默认光标。

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

谢谢。

编辑:我是个白痴。我在这个小应用程序上与之合作的人在某些地方藏了一些光标代码,这导致了问题。谢谢大家。

c# winforms cursor mouseevent
4个回答
0
投票

我从头开始尝试了一个新项目(仅使用mouseenter / leave处理程序,没有其他操作,并且可以使用。)>

可能是您的应用程序中的其他内容吗?


2
投票

为什么不为图片框设置光标?


0
投票
public Form1()
{
  InitializeComponent();
  pictureBox1.MouseHover += new EventHandler(PictureBox1_MouseHover);
}

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

0
投票

在这种情况下,可能会发生:

© www.soinside.com 2019 - 2024. All rights reserved.