0

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

有没有办法在禁用的面板中启用某些控件?
我会很高兴有一些想法如何做到这一点。

4

3 回答 3

2

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

您还可以“级联”启用来自事件的逻辑相关元素。例如,考虑一个复选框“Absolute Position”,它控制是否启用其他控件(X Pos、Y Pos)。X 和 Y 的启用状态可以从和chkAbsPosition等事件切换。 CheckChangedEnabledChanged

根据您的表单,您可能能够切换 2 或 3 个控件,并让它们中的每一个依次设置相关元素的状态。

高温高压

于 2013-09-13T13:03:09.443 回答
0

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

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

于 2013-09-13T07:07:36.917 回答
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

多亏了它,您可以禁用面板中的所有组件,但不能禁用面板。所以你仍然可以在你的面板上做任何你想做的事情,或者不禁用想要的控制:)

干杯。

于 2015-05-07T09:44:58.603 回答