首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用所有LinkLabel控件

启用所有LinkLabel控件
EN

Stack Overflow用户
提问于 2015-06-11 09:34:55
回答 1查看 163关注 0票数 0

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

根据某些用户交互,我需要启用一个或全部LinkLables。我可以很好地启用单个LinkLabel,但我无法找到一种方法来启用所有这些功能。

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

因此,我的问题有两部分-

  1. 如何只识别LinkLabel控件?
  2. 如何循环这些控件并启用它们?

到目前为止,我的情况是-

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-11 09:38:53

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

代码语言:javascript
复制
For Each ctrl as Control In Me.Controls
    If TypeOf ctrl Is LinkLabel Then ctrl.Enabled = True
Next ctrl

如果将LinkLabel放入容器(如PanelTableLayoutPanel),则可以使用如下函数:

代码语言:javascript
复制
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

如果将容器放入另一个容器(即:GroupBoxPanel中),则此函数也能工作。

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

代码语言:javascript
复制
EnableAllLinkLabels(Me, True)

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

代码语言:javascript
复制
EnableAllLinkLabels(Me.Panel3, False)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30776937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档