Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义光标在加载表单后消失/停止工作秒_C#_.net_Winforms_Cursor - Fatal编程技术网

C# 自定义光标在加载表单后消失/停止工作秒

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) {

当鼠标移动到我的项目中的某个对象(.ico文件而不是.cur)上时,我尝试使用自定义光标。当我加载时,它们可以正常工作,并且看起来非常完美,但是在表单加载后几秒钟,它们就消失了(或者代码不工作了!)!这些文件被设置为嵌入式资源,但我尝试了其他选项,似乎没有什么不同

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(); };
}