看起来,我相信这是一个限制“按设计”,你可能希望诉诸使用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