2017-06-07 55 views
0

我從下面的鏈接中使用了一個linq示例。 Going through controls in order未找到'OrderedEnumerable(Of Panel,Integer)'類型的公共成員'計數'

這正是我一直在尋找的。它爲我工作。謝謝Tim Schmelter

我添加了一個計時器控件和一些代碼。我的問題現在開始。之後,在運行時顯示錯誤。 即使我使用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 
+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 
+0

非常感謝Tim。有效。花了一些時間來完成我的編碼。所以遲遲沒有迴應。無論如何,我有疑問,爲什麼計數方法不起作用。我無法弄清楚。 –

相關問題