当用户悬停在自定义按钮上时,我的项目中有以下代码来更改鼠标光标:
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中的代码更改为:
this.Cursor = Cursors.WaitCursor;这和我预期的一样,箭头也显示出来了。
Cursors.Hand似乎与鼠标属性中的链接选择游标不相对应。但是我找不到更适合在Cursors类中使用的东西了。我做错了什么?
发布于 2010-08-27 12:37:30
.NET框架为Cursor.Hand提供了自己的游标;它不从操作系统加载用户选择的游标。
我只能想象,这是因为运行.NET的Windows 4没有提供“手动”游标。这是Windows 98和2000中添加的特性。如果需要的话,针对Windows 95或NT 4的应用程序会提供自己的手光标。
好消息是,解决办法相对简单。这是相当少量的互操作。您只需将LoadCursor与IDC_HAND一起使用,然后将返回的句柄传递给Cursor类的构造函数。
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));
}
}https://stackoverflow.com/questions/3584020
复制相似问题