0

我有一些默认情况下在表单上禁用的链接,每个链接都使用一个LinkLabel控件。

根据某些用户交互,我需要启用其中一个或所有LinkLables. 我可以很好地启用单曲LinkLabel,但我找不到启用所有这些的方法。

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

因此我的问题是两部分-

  1. 如何仅识别LinkLabel控件?
  2. 我怎样才能遍历这些控件并启用它们?

这是我到目前为止所拥有的 -

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哪些放在特定控件中,例如 aPanelTableLayoutPanel

4

1 回答 1

1

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

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

如果您将容器放在另一个容器中(即: a GroupBoxin a Panel),此功能也可以工作。

要启用所有功能LinkLabelForm请使用此代码调用该函数:

EnableAllLinkLabels(Me, True)

如果您只想禁用LinkLabelinPanel3您可以使用以下代码:

EnableAllLinkLabels(Me.Panel3, False)
于 2015-06-11T09:38:53.280 回答