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

10 .net c# controls panel winforms

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

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

或者,我怎样才能使这个小小的面板"在顶部",而不是"内部"的大型面板?

我疯狂猜测并尝试:

tinyPanel.Parent = null;
Run Code Online (Sandbox Code Playgroud)

tinyPanel.Parent = this;

但是,这只会让tinyPanel消失.

Cod*_*ray 15

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

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