【问题标题】:Enable Controls within disabled Panel in VB.Net在 VB.Net 的禁用面板中启用控件
【发布时间】:2013-09-17 18:47:17
【问题描述】:

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

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

【问题讨论】:

    标签: vb.net controls panel desktop-application


    【解决方案1】:

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

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

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

    HTH

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我有一个很好的解决方案。

        除非您真的想禁用面板,否则只需创建 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
        

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

        干杯。

        【讨论】:

          猜你喜欢
          • 2016-12-18
          • 1970-01-01
          • 1970-01-01
          • 2015-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多