C# Control.Cursor and Form.Cursor...

本文关键字:Cursor Form and Control | 更新日期: 2023-09-27 18:37:04

好的,正如我所理解的那样(我在这里可能是错的),Windows 窗体具有 Cursor 属性,所有子控件也是如此。 令人惊讶的是,此光标默认为 Cursors.Default,这是箭头指针。 目前为止,一切都好。

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

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

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

C# Control.Cursor and Form.Cursor...

来自MSDN

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

Cursor 属性是一个环境属性。环境属性是一个控件属性,如果未设置,则从父控件检索该属性。例如,默认情况下,按钮将具有与其父窗体相同的背景色。有关环境属性的详细信息,请参阅 AmbientProperties 类或 Control 类概述。

继承人注意事项

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