禁用父级面板,同时保持子级面板启用

10

我有一个WinForms应用程序,在其中有一个巨大的面板。该面板中包含许多内容,包括第二个小面板。

当某个事件发生时,我希望将大面板设置为Enabled = false,并且仍然希望小面板处于Enabled状态。我可以这样做吗?我尝试过在禁用大面板后重新启用小面板,但无效。

又或者,我如何使小面板位于大面板的顶部,但不是“内部”?

我猜测并尝试了以下代码:

tinyPanel.Parent = null;

并且 tinyPanel.Parent = this;

但是,这只会使tinyPanel消失。

2个回答

16
不,这是不可能的。当父控件被禁用时,所有的子控件都会被禁用。这就是Windows的工作方式;你无法改变它。
你需要找到另一种解决问题的方法。重新设置控件的父级一个选项,但你尝试的方式是不正确的。你需要将其从"massive Panel"的Controls 集合中移除,然后添加到你的表单的Controls集合中。然后你就可以独立地更改两个控件的启用状态。

0

我认为在父控件被禁用的情况下,你无法使子控件启用。


嗯...那么,也许如果我改变tinyPanel的z-order,它就可以工作了?还是我想象力太丰富了? - anon271334
3
Z顺序与父控件无关,它们是正交属性。 - Cody Gray
@Cody Gray:你很可能是对的,我想我搞混了停靠控件的顺序,比如工具栏。我现在正在修正我的答案。 - Dyppl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接