我在Form中的Panel中有一些控件。我想禁用Panel,但面板内的一些控件需要保持启用状态。
有没有办法在禁用的Panel中启用某些控件?
对于如何做到这一点,我会很高兴。
答案 0 :(得分:2)
Panels的一个好处是可以用来提供很少或没有视觉元素的逻辑分组(与逻辑和视觉的Groupbox相比)。鉴于您的问题,也许所有子控件实际上都不属于同一个容器(逻辑组)。您可以使用2或3个面板来解决容器/子项启用问题,并使用BorderStyle和BackColor属性使它们看起来像是一个面板(可能在主面板上,其唯一作用是定位子项)。
您还可以“级联”启用事件中的逻辑相关元素。例如,考虑一个复选框“绝对位置”,它控制是否启用其他控件(X Pos,Y Pos)。可以从chkAbsPosition
上的事件切换X和Y的已启用状态,例如CheckChanged
和EnabledChanged
。
根据您的表单,您可能可以切换2或3个控件,并让每个控件依次设置相关元素的状态。
HTH
答案 1 :(得分:0)
面板是一个容器,其启用的属性将取代其子容器。因此,您必须启用面板才能启用控件。
您可能做的不是将控件放在面板中,而是放在它上面,并相应地启用禁用。这样他们看起来就像他们不在面板中一样。
答案 2 :(得分:0)
我有一个很好的解决方案。
除非您确实要禁用面板,否则只需创建2个功能:
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
多亏了它,你的面板中的所有组件都被禁用,但不是你的面板。因此,您仍然可以在面板上执行任何操作,或者不禁用所需的控件:)
欢呼声。