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

时间:2012-06-26 11:30:40

标签: winforms panel

我正在尝试这样做

panel.Enabled = false; // to disable all controls on panel at once
panel.Cursor = Cursors.WaitCursor;

和调试器显示panel.Cursor是WaitCursor,但是当我在面板上移动鼠标时,光标仍然是箭头。

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

那么,如何修复呢?

1 个答案:

答案 0 :(得分:2)

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

根据您的具体需要,您可以选择将以下代码添加到按钮的父级 - 您可以优化例程,以便仅在需要更改时调用。

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