我在使用Windows Forms的C#自定义光标时遇到了一些奇怪的行为。我将问题简化为一个新项目,其中包括1个窗体、2个添加到窗体的面板、1个添加到项目属性/资源.resx的图标和3个添加到同一位置的图像。
该项目唯一的代码如下:
现在问题出现在我修改了窗体的背景图像属性时。我从各种来源下载了多个随机图像,并将它们设置为表单的背景图像。
该项目唯一的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestProject
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
panel1.Cursor = new Cursor(Properties.Resources.randomIcon.Handle);
panel2.Cursor = new Cursor(Properties.Resources.randomIcon.Handle);
}
}
}
现在问题出现在我修改了窗体的背景图像属性时。我从各种来源下载了多个随机图像,并将它们设置为表单的背景图像。
当我设置其中一些并运行程序时,两个面板都有自定义光标。
当我设置其他图像时,只有第二个面板有自定义光标。
我甚至找到了一张图片,面板1在前几秒钟内拥有它的光标,但如果我在这几秒钟后离开并重新进入该面板,则光标会永久删除。
如果我将窗体的背景图像布局属性更改为"None"而不是"Tile",则无论图像如何,光标都可以使用。
整个项目中没有进行任何其他修改。1个表单、2个面板、1个图标作为光标、3个图像和完全没有意义的(或者可能不是,也许我错过了什么)行为。
我只想弄清楚是什么原因导致了这种行为,因为我遇到了这个问题,而我正在处理一个更大的项目,追踪问题的核心花费了我一段时间。也许我不应该用这种方式使用光标,但问题仍然存在,为什么C#在除背景图像之外没有进行任何修改时会出现这种行为。
我制作了一个示例项目,下载链接: https://www.dropbox.com/s/bl4iomzyz1bv7kb/Sample.rar?dl=0