公开会员' Count' on type' OrderedEnumerable(Of Panel,Integer)'找不到

时间:2017-06-07 12:38:40

标签: vb.net

我在下面的链接中使用了linq示例。 Going through controls in order

这正是我想要的。它对我有用。谢谢Tim Schmelter

我添加了一个计时器控件和一些代码。我的问题现在开始了。之后,在运行它时显示错误。 即使我使用count属性删除代码区域,它也不会工作。

  

公开会员' Count' on type' OrderedEnumerable(Of Panel,Integer)'没找到。

我已导入...... Imports System.Linq

任何人都可以帮助我。我是vb.net的新手

    Private Sub InitialisePanels() '(pnl As Control)
    Dim allPanels = From pnl In Me.Controls.OfType(Of Panel)()
               Order By pnl.TabIndex

    'Dim blnControlPresent As Boolean
    For Each pnl As Panel In allPanels
        If pnl.[GetType]().Name = "Panel" Then
            pnl.BringToFront()
            pnl.Visible = True
            pnl.Dock = DockStyle.Fill
            pnl.Visible = False
            pnl.SendToBack()
        End If
    Next
    If allPanels.Count > 0 Then
        allPanels(mFirstPanel).BringToFront()
        allPanels(mFirstPanel).Visible = True
        mCurrentPanel = mFirstPanel
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

我必须承认,我不确定问题是什么(除了因为allPanels(mFirstPanel)没有索引器而导致OrderedEnumerable无法编译的事实),但这应该有用,假设你想把第一个小组带到前面:

Private Sub InitialisePanels() '(pnl As Control)
    Dim allPanels = From pnl In Me.Controls.OfType(Of Panel)()
                    Order By pnl.TabIndex    
    For Each pnl As Panel In allPanels
        pnl.BringToFront()
        pnl.Visible = True
        pnl.Dock = DockStyle.Fill
        pnl.Visible = False
        pnl.SendToBack()
    Next

    Dim firstPanel As Panel = allPanels.FirstOrDefault()

    If firstPanel IsNot Nothing Then
        firstPanel.BringToFront()
        firstPanel.Visible = True
        mCurrentPanel = firstPanel
    End If
End Sub