C# Windows窗体复制光标引用
我有一个控件,它的C# Windows窗体复制光标引用,c#,winforms,C#,Winforms,我有一个控件,它的Cursor属性类型为System.Windows.Forms.Cursor。下面是我尝试做的一个例子: if (someCondition) { oldCursor = myControl.Cursor; myControl.Cursor = Cursors.Hand; } else { myControl.Cursor = oldCursor; } 我已经使用断点进入了代码,我可以看到逻辑是正确的。但是,当控件的Cursor属性设置回oldCurs
Cursor
属性类型为System.Windows.Forms.Cursor
。下面是我尝试做的一个例子:
if (someCondition)
{
oldCursor = myControl.Cursor;
myControl.Cursor = Cursors.Hand;
}
else
{
myControl.Cursor = oldCursor;
}
我已经使用断点进入了代码,我可以看到逻辑是正确的。但是,当控件的Cursor
属性设置回oldCursor
时,光标的视觉外观保持不变(例如Cursors.Hand
)
我注意到Cursor
类中的CopyHandle()
方法,我想知道我是否需要在复制操作中使用它
任何人都可以了解如何复制
光标
引用吗?您试图捕获的光标
是内存中的Win32资源。您需要它的句柄
,因为您怀疑:
private IntPtr _prevCursor;
public MyClass()
{
myControl.Cursor = Cursor.Default;
_prevCursor = myControl.Cursor.Handle;
}
public SomeMethod()
{
if (someCondition)
{
_prevCursor = myControl.Cursor.Handle;
myControl.Cursor = Cursors.Hand;
}
else
{
myControl.Cursor = new Cursor(_prevCursor);
}
}
您可能需要在更改光标后调用,使其使用对纯
光标的引用来显示更改。我一定是做错了什么。我切换回了我原来的方法(进行了一点重构),现在一切都很顺利
感谢大家的帮助。从提供的信息来看,没有任何不可行的理由,Winforms确保当鼠标当前位于该控件上时,屏幕上的光标得到更新。你解释得不够清楚,还发生了什么?检查myControl.IsHandleCreated与调试器。DoEvents()
是邪恶的。而且不会有帮助,顺便说一句。看看你是否不相信我。我已经实现了这一点,但它只在一些时候起作用。我不明白为什么。。。我还尝试了使用CopyHandle()方法,而不仅仅是使用Handle,这样就可以了。光标是正确的图像,但缩放太小。也许问题是我的初始游标是自定义游标?好吧,我不确定以前我只是保存对游标对象本身的引用时出现了什么问题,但我再次尝试,它成功了。。。也许我对控件的引用不正确。。。