问题描述
我有一些默认情况下在表单上禁用的链接,每个链接都使用 LinkLabel
控件.
I have a few links which are disabled by default on a form, each using a LinkLabel
control.
根据某些用户交互,我需要启用一个或所有 LinkLables
.我可以启用单个 LinkLabel
就好了,但我找不到启用所有这些的方法.
Depending on some user interaction I need to enable either one or all of the LinkLables
. I can enable the single LinkLabel
just fine, but I can't find a way of enabling all of them.
在下面的示例中,我试图启用所有控件(作为对我的方法的测试),但失败了,并且根本没有启用 LinkLabels
.
In the example below I'm trying to enable all controls (as a test of my methodology), but that fails and the LinkLabels
are not enabled at all.
因此我的问题分为两部分 -
Therefore my question is two part -
- 如何仅识别
LinkLabel
控件? - 如何遍历这些控件并启用它们?
这是我目前所拥有的 -
Here is what I have so far -
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
?
Bonus question - I may need to separate my LinkLabels
in to two sections, so is there a way of identifying LinkLabels
which are placed within a specific control, such as a Panel
or TableLayoutPanel
?
推荐答案
您可以使用以下代码测试控件是否为 LinkLabel
:
You can test if a control is a LinkLabel
using this code:
For Each ctrl as Control In Me.Controls
If TypeOf ctrl Is LinkLabel Then ctrl.Enabled = True
Next ctrl
如果您将 LinkLabel
放在容器中(例如 Panel
或 TableLayoutPanel
),您可以使用这样的函数:
If you put your LinkLabel
in a container (such as Panel
or TableLayoutPanel
) you can use a function like this:
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
),此功能也适用.
This function works also if you put a container inside another container (i.e.: a GroupBox
in a Panel
).
要启用 Form
中的所有 LinkLabel
使用此代码调用函数:
To enable all LinkLabel
in a Form
use this code to call the function:
EnableAllLinkLabels(Me, True)
如果您只想禁用 Panel3
中的 LinkLabel
,您可以使用以下代码:
if you want to disable only the LinkLabel
in Panel3
you can use this code:
EnableAllLinkLabels(Me.Panel3, False)
这篇关于启用所有 LinkLabel 控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!