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