Control.Cursor 僅支援靜態 .cur 檔案,**不支援動畫 .ani 游標**。需呼叫 Win32 API 實現。
[DllImport("user32.dll", EntryPoint = "LoadCursorFromFile")]
public static extern IntPtr LoadCursorFromFile(string lpFileName);
[DllImport("user32.dll", EntryPoint = "SetSystemCursor")]
public static extern bool SetSystemCursor(IntPtr hcur, int id);
需 using System.Runtime.InteropServices;。
32512 (OCR_NORMAL) — 普通箭頭32513 (OCR_IBEAM) — 文字編輯32514 (OCR_WAIT) — 等待32515 (OCR_CROSS) — 十字線32516 (OCR_UP) — 上箭頭32640 (OCR_APPSTARTING) — 應用程式啟動
private void Form_Load(object sender, EventArgs e)
{
string path = Path.Combine(Application.StartupPath, "sl3210mouse.ani");
IntPtr hCur = LoadCursorFromFile(path);
SetSystemCursor(hCur, 32512); // 替換系統預設箭頭
}
private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
// 還原系統預設箭頭 (需載入標準 .cur)
IntPtr hCur = LoadCursorFromFile(@"C:\Windows\Cursors\arrow_m.cur");
SetSystemCursor(hCur, 32512);
}
SetSystemCursor 替換的是**系統全域**游標,不僅限於應用程式。關閉時務必還原,否則影響其他程式。.ani 檔案路徑正確 (建議置於專案輸出目錄,設定「複製到輸出目錄」)。