启用所有LinkLabel控件

时间:2015-06-11 09:34:56

标签: vb.net visual-studio-2013 linklabel

我在表单上默认禁用了一些链接,每个链接都使用LinkLabel控件。

根据某些用户互动,我需要启用LinkLables中的一个或全部。我可以启用单个LinkLabel,但我无法找到启用所有这些功能的方法。

在下面的示例中,我尝试启用所有控件(作为对我的方法的测试),但是失败并且LinkLabels根本没有启用。

因此我的问题是两部分 -

  1. 如何仅识别LinkLabel控件?
  2. 如何循环使用这些控件并启用它们?
  3. 这是我到目前为止所拥有的 -

    Private Sub EnableLink(Optional ByRef linkLabel As LinkLabel = Nothing)
    
        If linkLabel Is Nothing Then    ' Enable all links
            For Each singleLink In Me.Controls
                singleLink.Enabled = True
            Next
        Else                            ' Enable a single link
            linkLabel.Enabled = True
        End If
    
    End Sub
    

    加分问题 - 我可能需要将LinkLabels分为两个部分,因此有没有办法识别放置在特定控件中的LinkLabels,例如作为PanelTableLayoutPanel

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码测试控件是否为LinkLabel

For Each ctrl as Control In Me.Controls
    If TypeOf ctrl Is LinkLabel Then ctrl.Enabled = True
Next ctrl

如果您将LinkLabel放入容器(例如PanelTableLayoutPanel),则可以使用以下功能:

Private Sub EnableAllLinkLabels(ByVal ctrlContainer As Control, ByVal blnEnable As Boolean)

    If ctrlContainer.HasChildren Then

        For Each ctrl As Control In ctrlContainer.Controls

            If TypeOf ctrl Is LinkLabel Then
                ctrl.Enabled = blnEnable
            ElseIf TypeOf ctrl Is Panel Or TypeOf ctrl Is TableLayoutPanel Then
                EnableAllLinkLabels(ctrl, blnEnable)
            End If          

        Next ctrl

    End If

End Sub

如果您将容器放在另一个容器中(即:GroupBox中的Panel),此函数也可以。

要启用LinkLabel中的所有Form,请使用此代码调用该函数:

EnableAllLinkLabels(Me, True)

如果您只想禁用LinkLabel中的Panel3,则可以使用此代码:

EnableAllLinkLabels(Me.Panel3, False)