看起來,我相信這是一個限制「按設計」,你可能希望訴諸使用Win32 API的覆蓋標準的WinForm的行爲。
[DllImport("user32.dll")]
static extern IntPtr LoadCursorFromFile(string lpFileName);
[DllImport("user32.dll")]
static extern IntPtr SetCursor(IntPtr hCursor);
[DllImport("user32.dll")]
static extern bool SetSystemCursor(IntPtr hcur, uint id);
private const uint OCR_NORMAL = 32512;
static Cursor ColoredCursor;
...
// ======一套Windows CURSOR ======================= =================
IntPtr cursor = LoadCursorFromFile("example.cur");
bool ret_val = SetSystemCursor(cursor, OCR_NORMAL);
// ======一套Windows CURSOR ============= ===========================
// ====== SET FORM CURSOR ====== ==================================
IntPtr cursor = LoadCursorFromFile("example.cur");
ColoredCursor = new Cursor(cursor);
this.Cursor = ColoredCursor;
// ======== SET FORM CURSOR ================================= =======
// ====== SET FORM CURSOR從圖像======================== ======
Bitmap hh = (Bitmap)System.Drawing.Bitmap.FromFile("example.png");
Graphics.FromImage(hh);
IntPtr ptr = hh.GetHicon();
Cursor c = new Cursor(ptr);
this.Cursor = c;
// ========從圖像設置表格遊標====================== ============
編號:http://www.pinvoke.net/default.aspx/user32.setcursor
有關其他的例子在這裏看到:https://social.msdn.microsoft.com/Forums/windows/en-US/9ea0bf74-760f-4f40-b64c-0cf7b0a56939/save-custom-cursor?forum=winforms
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
Bitmap bmp = Properties.Resources.Image1;
bmp.MakeTransparent(Color.White);
IntPtr hIcon = bmp.GetHicon();
Icon ico = Icon.FromHandle(hIcon);
Cursor cur = new Cursor(hIcon);
using (FileStream fs = new FileStream(@"c:\temp\test.cur", FileMode.Create, FileAccess.Write))
ico.Save(fs);
cur.Dispose();
ico.Dispose();
DestroyIcon(hIcon);
// Test it
cur = new Cursor(@"c:\temp\test.cur");
this.Cursor = cur;
}
[DllImport("user32.dll")]
extern static bool DestroyIcon(IntPtr handle);
}
}
一種方式將是一個'名單
這不會令人遺憾。問題在於窗戶是模態的。所有遊標都使用Application.UseWaitCursor正確設置。它似乎只是一個模態窗體的窗口行爲。 – Emilie217
而使用後臺工作者的目的是釋放用戶界面,而不管用戶是否希望能夠做其他事情。即使用戶不能對它做任何事情,我也不希望剩下的UI被凍結。它看起來很奇怪。 – Emilie217