【问题标题】:Enable all LinkLabel controls启用所有 LinkLabel 控件
【发布时间】:2015-06-11 09:34:55
【问题描述】:

我有几个默认在表单上禁用的链接,每个链接都使用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,例如@987654329 @ 或 TableLayoutPanel?

【问题讨论】:

    标签: vb.net visual-studio-2013 linklabel


    【解决方案1】:

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

    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
    

    如果您将一个容器放入另一个容器中(即:Panel 中的 GroupBox),此功能也有效。

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

    EnableAllLinkLabels(Me, True)
    

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

    EnableAllLinkLabels(Me.Panel3, False)
    

    【讨论】:

    • 遗憾的是没有骰子,尽管在 For Each 声明中添加 as Control 很好。
    • 您的 LinkLabel 是否已在面板中?如果是,那么只需更改 YourPanel.Controls 中的 Me.Controls。
    • 是的,您的建议有效(尽管它是Me.MyPanel.Controls)。这是否意味着我必须始终指定Panel?这意味着如果我将LinkLabels 拆分为多个Panels,我首先必须识别两个Panels,然后在其中找到LinkLabels
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 2010-11-10
    • 1970-01-01
    相关资源
    最近更新 更多