C# 自定义光标在加载表单后消失/停止工作秒
当鼠标移动到我的项目中的某个对象(.ico文件而不是.cur)上时,我尝试使用自定义光标。当我加载时,它们可以正常工作,并且看起来非常完美,但是在表单加载后几秒钟,它们就消失了(或者代码不工作了!)!这些文件被设置为嵌入式资源,但我尝试了其他选项,似乎没有什么不同C# 自定义光标在加载表单后消失/停止工作秒,c#,.net,winforms,cursor,C#,.net,Winforms,Cursor,当鼠标移动到我的项目中的某个对象(.ico文件而不是.cur)上时,我尝试使用自定义光标。当我加载时,它们可以正常工作,并且看起来非常完美,但是在表单加载后几秒钟,它们就消失了(或者代码不工作了!)!这些文件被设置为嵌入式资源,但我尝试了其他选项,似乎没有什么不同 Cursor foo = new Cursor(Properties.Resources.filename.Handle); private void form_Load(object sender, EventArgs e) {
Cursor foo = new Cursor(Properties.Resources.filename.Handle);
private void form_Load(object sender, EventArgs e)
{
object.Cursor = foo;
}
即使我在鼠标上方更改光标,或者改用
This.cursor
,也会发生这种情况。给你什么?你看到垃圾回收器在做它的工作。第一代0垃圾回收将销毁Properties.Resources.filename
返回的图标对象。这将使句柄无效,光标将离开。使用Handle属性不足以保持对象被引用,它是IntPtr而不是对象引用
您需要自己保持图标对象的活动状态:
private Icon fooIcon = Properties.Resources.filename;
public form() {
InitializeComponent();
object.Cursor = new Cursor(fooIcon.Handle);
this.FormClosed += delegate { fooIcon.Dispose(); };
}