Ok, as I understand things (and I'm probably wrong here), a Windows Form has a Cursor property and so do all child controls. This cursor is surprisingly defaulting to Cursors.Default, which is the arrow pointer. So far, so good.
Now, if I want a different cursor on areas of the form not covered by controls, I can check the form mouse move event and change the cursor therein. So now what I expect is that when the cursor is moved over the form, the cursor changes to whatever I set it to in Form.MouseMove_Handler, but when the cursor is moved over a child control of the form, it changes to the child's Control.Cursor.
However this is not what I see. I see my cursor changing when moving over the form, but when it moves over a child control, it remains as it was when moving over the parent form. The Control.Cursor property doesn't seem to be honoured at all.
Do I have to handle MouseMove, MouseEnter and MouseLeave events for ALL controls on my form in order to get this to work?
MouseMove_Handleris also running when the mouse is over a control, thus changing the cursor back from whatever the control thought it should be.