我在下面的链接中使用了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
答案 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