如何在C#中悬停时更改光标

时间:2016-09-13 15:11:24

标签: c# winforms

我无法找到如何将光标更改为“指针”或悬停图像时调用的任何内容。

我尝试使用MouseOver,但我无法使用它。这是我目前的代码;

private void image_Phone_MouseOver(object sender, EventArgs e)
{
    Cursor.Current = Cursors.Hand;
}

但是,光标不会改变。

6 个答案:

答案 0 :(得分:9)

在控件属性窗口中设置适当的光标。

以下是为图片框设置“手动”光标的示例。

enter image description here

答案 1 :(得分:3)

这是一种在实际 Image时更改光标的方法:

enter image description here

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    pictureBox1.Cursor = ImageArea(pictureBox1).Contains(e.Location) ?
                                                Cursors.Hand : Cursors.Default;
}

Rectangle ImageArea(PictureBox pbox)
{
    Size si = pbox.Image.Size;
    Size sp = pbox.ClientSize;
    float ri = 1f * si.Width / si.Height;
    float rp = 1f * sp.Width / sp.Height;
    if (rp > ri)
    {
        int width = si.Width * sp.Height / si.Height;
        int left = (sp.Width - width) / 2;
        return new Rectangle(left, 0, width, sp.Height);
    }
    else
    {
        int height = si.Height * sp.Width / si.Width;
        int top = (sp.Height - height) / 2;
        return new Rectangle(0, top, sp.Width, height);
    }
}

请注意,在更改ImgArea的{​​{1}}或ImageSizeMode时,您需要重新计算Size

答案 2 :(得分:3)

对于任何PowerShell / Windows Forms程序员:

您基本上可以将其用于表单中的每个元素:

$pictureBox1.Add_MouseHover({ $this.Cursor = "Hand" })

答案 3 :(得分:1)

而不是使用Cursor.Current使用image_Phone.Cursor = Cursors.Hand;

答案 4 :(得分:0)

  1. 您可以使用鼠标按下事件更改光标
  2. 与鼠标移动事件相比,检查位置是否与图像相同
  3. 等待鼠标按下事件并设置默认光标

    • 或者只设置光标的属性

答案 5 :(得分:0)

在WinForms中(由标记做出的假设) - PicutureBox控件上有一个Cursor属性...(它实际上在Control上)尝试设置?