【问题标题】:Public member 'Count' on type 'OrderedEnumerable(Of Panel,Integer)' not found未找到类型“OrderedEnumerable(Of Panel,Integer)”的公共成员“Count”
【发布时间】:2017-06-07 12:38:39
【问题描述】:

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

这正是我想要的。它对我有用。谢谢蒂姆·施梅尔特

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

未找到类型“OrderedEnumerable(Of Panel,Integer)”的公共成员“Count”。

我已经导入... 导入 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

【问题讨论】:

  • 谢谢蒂姆。但它没有用。

标签: vb.net


【解决方案1】:

我必须承认我不确定问题出在哪里(除了 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

【讨论】:

  • 非常感谢蒂姆。有效。我花了一些时间来完成我的编码。所以迟来的反应。无论如何,我有疑问,为什么 count 方法不起作用。我想不通。
猜你喜欢
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 2016-04-30
  • 2017-12-28
  • 1970-01-01
相关资源
最近更新 更多