1

好的,据我了解(我可能在这里错了),Windows 窗体具有 Cursor 属性,所有子控件也是如此。这个光标令人惊讶地默认为 Cursors.Default,即箭头指针。到现在为止还挺好。

现在,如果我想在控件未覆盖的表单区域上使用不同的光标,我可以检查表单鼠标移动事件并在其中更改光标。所以现在我期望的是,当光标移到窗体上时,光标会变为我在 Form.MouseMove_Handler 中设置的任何值,但是当光标移到窗体的子控件上时,它会变为子控件。光标。

然而,这不是我所看到的。我看到光标在表单上移动时发生了变化,但是当它在子控件上移动时,它在父表单上移动时保持不变。Control.Cursor 属性似乎根本没有受到尊重。

我是否必须为表单上的所有控件处理 MouseMove、MouseEnter 和 MouseLeave 事件才能使其正常工作?

4

1 回答 1

2

来自 MSDN

将 Cursor 分配给控件的 Cursor 属性以更改鼠标指针悬停在控件上时显示的光标。要临时更改应用程序上所有控件的鼠标光标,请设置 Cursor.Current 属性。通常,在填充 ComboBox 或保存或加载文件时,您会将 Cursor.Current 属性设置为等待光标。

Cursor 属性是环境属性环境属性是控件属性,如果未设置,则从父控件中检索。例如,默认情况下,Button 将具有与其父 Form 相同的 BackColor。有关环境属性的更多信息,请参阅 AmbientProperties 类或 Control 类概述。

继承人须知

在派生类中重写 Cursor 属性时,使用基类的 Cursor 属性来扩展基实现。否则,您必须提供所有实现。您不需要同时覆盖 Cursor 属性的 get 和 set 方法;如果需要,您只能覆盖一个。

于 2012-06-14T09:39:10.283 回答