禁用父面板,同时启用子面板

时间:2011-03-19 09:50:56

标签: c# .net winforms controls panel

我有一个WinForms应用程序,我有一个庞大的Panel。在Panel里面是一堆东西,包括第二个小小的面板。

当某个事件发生时,我希望大型面板变为Enabled = false,并且我仍然希望将小面板设置为Enabled。我可以这样做吗?我试图在我禁用大型面板后重新启用这个小面板,但是没有用。

或者,我怎样才能做到如此微小的面板是“在顶部”,而不是“内部”的大型面板?

我疯狂猜测并尝试:

tinyPanel.Parent = null;

tinyPanel.Parent = this;

但是,这只会让tinyPanel消失。

2 个答案:

答案 0 :(得分:15)

不,这是不可能的。 所有子控件在其父级被禁用时被禁用。这就是Windows的工作原理;你无法改变它。

您需要找到解决问题的不同方法。重新设置控件一个选项,但是你尝试这样做的方式是不正确的。您需要将其从Controls collection中移除到“大型面板”,然后将其添加到表单的Controls集合中。然后,您将能够独立地更改两个控件的启用状态。

答案 1 :(得分:0)

我不认为您可以在禁用父控件时启用控件。