本文介绍了启用所有 LinkLabel 控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些默认情况下在表单上禁用的链接,每个链接都使用 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 -

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

这是我目前所拥有的 -

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在特定控件中,例如 PanelTableLayoutPanel?

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 放在容器中(例如 PanelTableLayoutPanel),您可以使用这样的函数:

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 控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-15 11:45