在pictureBox上更改光标

6
我试图在WinForms应用程序中实现一个图像按钮,就像在使用ASP.NET时一样容易。问题似乎是(我怀疑)当鼠标悬停在picturebox内的图像上时,它没有响应或触发mouseEnter事件。 看起来如果我有一个比pictureBox大小小的图片,它将接受触发事件的原因,但在pictureBox中的图像上方不会?技巧是将pictureBox设置为sizeMode=zoom。然后当鼠标悬停在“imageButton”上时,做两件事情:稍微扩大PictureBox的尺寸+将光标更改为手形。这样我就可以得到一种类似于ASP.NET的鼠标悬停效果。 有人遇到过这个问题吗?首先我尝试了mouseHover,然后我认为enter会更好,因为它只需要鼠标通过picture box的边界...但是enter和hover事件都对我不起作用... 编辑:事件确实会触发,如果我最初将sizemode设置为CenterImage并在事件内部请求sizemode=zoom,那么效果就会发生。但cursor.current=Cursors.Hand不会改变。
3个回答

15

这应该可以工作

    private void pictureBox1_MouseEnter(object sender, EventArgs e)
    {
        pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
        pictureBox1.Cursor = Cursors.Hand;
    }

    private void pictureBox1_MouseLeave(object sender, EventArgs e)
    {
        pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
        pictureBox1.Cursor = Cursors.Default;
    }

1
似乎我应该更好地了解如何使用 Cursors 类。
cursor=Cursors.hand;

rather than

cursor.current=Cursors.hand;

那真是尴尬啊..


1

只在pictureBox上添加MouseMove事件,并为其设置光标。

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            pictureBox1.Cursor = Cursors.Hand;
        }


1
请为您的代码提供一些解释,以便其他人更容易理解。 - afxentios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接