首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cursors.Hand不显示链接选择游标

Cursors.Hand不显示链接选择游标
EN

Stack Overflow用户
提问于 2010-08-27 12:20:13
回答 1查看 820关注 0票数 0

当用户悬停在自定义按钮上时,我的项目中有以下代码来更改鼠标光标:

代码语言:javascript
复制
protected override void OnMouseEnter(EventArgs e)
{
    this.Cursor = Cursors.Hand;
    base.OnMouseEnter(e);
}

protected override void OnMouseLeave(EventArgs e)
{
    this.Cursor = Cursors.Default;
    base.OnMouseLeave(e);
}

这很好,只是显示的光标是标准的白手光标。但是在Windows中的“鼠标属性”中,我已经将链接选择光标设置为一个彩色的动画箭头。

为了研究这个问题,我在“鼠标属性”中将动画箭头设置为繁忙的光标,并将OnMouseEnter中的代码更改为:

代码语言:javascript
复制
this.Cursor = Cursors.WaitCursor;

这和我预期的一样,箭头也显示出来了。

Cursors.Hand似乎与鼠标属性中的链接选择游标不相对应。但是我找不到更适合在Cursors类中使用的东西了。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-27 12:37:30

.NET框架为Cursor.Hand提供了自己的游标;它不从操作系统加载用户选择的游标。

我只能想象,这是因为运行.NET的Windows 4没有提供“手动”游标。这是Windows 98和2000中添加的特性。如果需要的话,针对Windows 95或NT 4的应用程序会提供自己的手光标。

好消息是,解决办法相对简单。这是相当少量的互操作。您只需将LoadCursorIDC_HAND一起使用,然后将返回的句柄传递给Cursor类的构造函数。

代码语言:javascript
复制
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

class Form1 : Form{
    enum IDC{
        HAND = 32649,
        // other values omitted
    }

    [DllImport("user32.dll", CharSet=CharSet.Auto)]
    static extern IntPtr LoadCursor(IntPtr hInstance, IDC cursor);

    public Form1(){
        Cursor = new Cursor(LoadCursor(IntPtr.Zero, IDC.HAND));
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3584020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档