好吧,据我所知(这里我可能错了),Windows窗体和所有子控件都有Cursor属性。令人惊讶的是,此光标默认为Cursors.Default,这是箭头指针。到现在为止还好。
现在,如果我想要在窗体未被控件覆盖的区域上使用不同的光标,我可以检查窗体鼠标移动事件并更改其中的光标。因此,现在我期望的是,当光标移动到窗体上时,光标将更改为我在Form.MouseMove_Handler中将其设置为的值,但是当光标移动到窗体的子控件上时,它将更改为该子控件的Control.Cursor。
然而,这并不是我所看到的。我看到光标在窗体上移动时会发生变化,但当它在子控件上移动时,它仍然与在父窗体上移动时一样。Control.Cursor属性似乎根本不受欢迎。
我是否必须为窗体上的所有控件处理MouseMove、MouseEnter和MouseLeave事件才能使其正常工作?
发布于 2012-06-14 17:39:10
来自MSDN的
将光标分配给控件的Cursor属性,以更改当鼠标指针位于控件上时显示的光标。若要临时更改应用程序上所有控件的鼠标光标,请设置Cursor.Current属性。通常,在填充ComboBox或保存或加载文件时,应将Cursor.Current属性设置为等待游标。
Cursor属性是一个环境属性。环境属性是一种控件属性,如果未设置该属性,将从父控件中检索该属性。例如,默认情况下,按钮将具有与其父窗体相同的BackColor。有关环境属性的更多信息,请参见AmbientProperties类或Control类概述。
对继承者的注释
重写派生类中的Cursor属性时,请使用基类的Cursor属性来扩展基实现。否则,您必须提供所有实现。不需要同时重写Cursor属性的get和set方法;如果需要,只能重写其中一个方法。
https://stackoverflow.com/questions/11030328
复制相似问题