如何在WinForms中将WaitCursor光标设置在禁用的面板上

如何在WinForms中将WaitCursor光标设置在禁用的面板上,winforms,panel,Winforms,Panel,我正试着这么做 panel.Enabled = false; // to disable all controls on panel at once panel.Cursor = Cursors.WaitCursor; 调试器显示了该面板。光标是WaitCursor,但当我在面板上移动鼠标时,光标仍然是箭头 panel.Update(); panel.Refresh(); // does not help 那么,如何修复它呢?禁用的控件将不会接收Windows消息。最简单的方法是保持启用状态

我正试着这么做

panel.Enabled = false; // to disable all controls on panel at once
panel.Cursor = Cursors.WaitCursor;
调试器显示了该面板。光标是WaitCursor,但当我在面板上移动鼠标时,光标仍然是箭头

panel.Update(); panel.Refresh(); // does not help

那么,如何修复它呢?

禁用的控件将不会接收Windows消息。最简单的方法是保持启用状态,并以不同的方式处理“禁用”

对于您的特定需求,另一种选择是将下面的代码添加到按钮的父级上——您可以优化例程,使其仅在需要更改时调用

        this.MouseMove += (s, a) =>
                              {
                                  if (button2.Bounds.Contains(a.Location))
                                      this.Cursor = Cursors.WaitCursor;
                                  else
                                      this.Cursor = Cursors.Default;
                              };

按照设计,“禁用”并不意味着“等待”。改为设置窗体的Cursor属性。我没说它有。但禁用面板上的鼠标始终为箭头,即使其属性Cursor=WaitCursor。设置窗体的光标没有帮助,而且在某些情况下可能会出错。