2016-01-19 16 views
1

我試圖在將鼠標懸停在某個對象(.ico文件而不是.cur)與我的項目時使用自定義光標。當我加載時,它們工作並顯示完美,但是在窗體加載後幾秒鐘它們就消失了(或者代碼不起作用)!這些文件被設置爲嵌入式資源,但我嘗試了其他選項,但似乎沒有什麼區別。自定義光標在加載表格後消失/停止工作秒數

Cursor foo = new Cursor(Properties.Resources.filename.Handle); 

private void form_Load(object sender, EventArgs e) 
{ 
    object.Cursor = foo; 
} 

發生這種情況,即使我改變鼠標懸停光標,或者使用this.Cursor代替。是什麼賦予了?

回答

3

你正在看到垃圾收集器的工作。第一代#0垃圾收集將銷燬由Properties.Resources.filename返回的Icon對象。這使得句柄無效,光標就會再見。使用句柄屬性是而不是足以保持引用的對象,它是一個IntPtr而不是對象引用。

你需要保持Icon對象活着自己:

private Icon fooIcon = Properties.Resources.filename; 

public form() { 
    InitializeComponent(); 
    object.Cursor = new Cursor(fooIcon.Handle); 
    this.FormClosed += delegate { fooIcon.Dispose(); }; 
} 
相關問題