在VB.Net中禁用的面板中启用控件

在VB.Net中禁用的面板中启用控件,vb.net,controls,panel,desktop-application,Vb.net,Controls,Panel,Desktop Application,我在窗体的面板中有一些控件。我想禁用面板,但面板内的某些控件需要保持启用状态 有没有办法在禁用的面板内启用某些控件? 我很乐意知道如何做到这一点。面板是一个容器,其已启用属性将取代其子属性。因此,您必须启用面板才能启用控件 您可以做的不是将控件放在面板中,而是放在面板的顶部,并相应地启用禁用。这样,当它们不在面板中时,它们看起来就像在面板中一样。面板的一个好处是可以使用很少或没有可视元素来提供逻辑分组(与逻辑和可视的Groupbox相比)。考虑到您的问题,可能所有子控件实际上不属于同一个容器(逻

我在窗体的面板中有一些控件。我想禁用面板,但面板内的某些控件需要保持启用状态

有没有办法在禁用的面板内启用某些控件?

我很乐意知道如何做到这一点。

面板是一个容器,其已启用属性将取代其子属性。因此,您必须启用面板才能启用控件


您可以做的不是将控件放在面板中,而是放在面板的顶部,并相应地启用禁用。这样,当它们不在面板中时,它们看起来就像在面板中一样。

面板的一个好处是可以使用很少或没有可视元素来提供逻辑分组(与逻辑和可视的Groupbox相比)。考虑到您的问题,可能所有子控件实际上不属于同一个容器(逻辑组)。您可以使用2个或3个面板来解决容器/子级启用问题,并使用BorderStyle和BackColor属性使它们看起来都是一个面板(可能在主面板上,其唯一作用是定位子级)

您还可以“级联”启用事件中的逻辑相关元素。例如,考虑一个复选框“绝对位置”,它控制是否启用了其他控件(XPOS,Y POS)。X和Y的启用状态可以从
chkAbsPosition
上的事件进行切换,例如
CheckChanged
EnabledChanged

根据您的表单,您可以切换2个或3个控件,并让每个控件依次设置依赖元素的状态


我有一个很好的解决办法

除非确实要禁用面板,否则只需创建两个功能:

Function disablePanel()

    For Each element In yourForm.yourPanel.controls
        element.enabled = False
    Next

    Return Nothing
End Function


Function enablePanel()

    For Each element In yourForm.yourPanel.controls
        element.enabled = true
    Next

    Return Nothing
End Function
多亏了它,您才禁用了面板中的所有组件,但没有禁用面板中的组件。因此,您仍然可以在面板上执行任何操作,或者不禁用所需的控件:)

干杯