启用所有 LinkLabel 控件
Enable all LinkLabel controls
我有几个默认情况下在表单上禁用的链接,每个链接都使用 LinkLabel
控件。
根据某些用户交互,我需要启用一个或所有 LinkLables
。我可以启用单个 LinkLabel
就好了,但我找不到启用所有这些的方法。
在下面的示例中,我试图启用所有控件(作为对我的方法的测试),但是失败了并且 LinkLabels
根本没有启用。
因此我的问题分为两部分 -
- 如何只识别
LinkLabel
个控件?
- 如何遍历这些控件并启用它们?
这是我目前所拥有的 -
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
放在哪个部分特定控件,例如 Panel
或 TableLayoutPanel
?
您可以使用以下代码测试控件是否为 LinkLabel
:
For Each ctrl as Control In Me.Controls
If TypeOf ctrl Is LinkLabel Then ctrl.Enabled = True
Next ctrl
如果您将 LinkLabel
放入容器中(例如 Panel
或 TableLayoutPanel
),您可以使用这样的函数:
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
如果您将一个容器放在另一个容器中(即:Panel
中的 GroupBox
),此功能也适用。
要在 Form
中启用所有 LinkLabel
使用此代码调用函数:
EnableAllLinkLabels(Me, True)
如果您只想禁用 Panel3
中的 LinkLabel
您可以使用此代码:
EnableAllLinkLabels(Me.Panel3, False)
我有几个默认情况下在表单上禁用的链接,每个链接都使用 LinkLabel
控件。
根据某些用户交互,我需要启用一个或所有 LinkLables
。我可以启用单个 LinkLabel
就好了,但我找不到启用所有这些的方法。
在下面的示例中,我试图启用所有控件(作为对我的方法的测试),但是失败了并且 LinkLabels
根本没有启用。
因此我的问题分为两部分 -
- 如何只识别
LinkLabel
个控件? - 如何遍历这些控件并启用它们?
这是我目前所拥有的 -
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
放在哪个部分特定控件,例如 Panel
或 TableLayoutPanel
?
您可以使用以下代码测试控件是否为 LinkLabel
:
For Each ctrl as Control In Me.Controls
If TypeOf ctrl Is LinkLabel Then ctrl.Enabled = True
Next ctrl
如果您将 LinkLabel
放入容器中(例如 Panel
或 TableLayoutPanel
),您可以使用这样的函数:
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
如果您将一个容器放在另一个容器中(即:Panel
中的 GroupBox
),此功能也适用。
要在 Form
中启用所有 LinkLabel
使用此代码调用函数:
EnableAllLinkLabels(Me, True)
如果您只想禁用 Panel3
中的 LinkLabel
您可以使用此代码:
EnableAllLinkLabels(Me.Panel3, False)