执行此代码后:
Dim arr = From ctl In ContainerCtl.Controls.Cast(Of Control)()
Select ctl
Where (ctl.Enabled = True) AndAlso _
(Not TypeOf ctl Is Label) AndAlso _
(Not TypeOf ctl Is Panel) AndAlso _
(Not TypeOf ctl Is GroupBox) AndAlso _
(Not TypeOf ctl Is C1.Win.C1FlexGrid.C1FlexGrid AndAlso bSkipGrid)
Order By ctl.TabIndex
如何访问第一个元素?我需要将其作为Control对象访问。
谢谢!
更新:使用First()或FirstOrDefault()永远不会起作用:
答案 0 :(得分:3)
您需要在文件顶部添加以下内容:
using System.Linq;
然后您需要做的就是使用以下内容:
arr.First()
或者如果你的可枚举结果可能为零(这会导致上述内容抛出异常)。
arr.FirstOrDefault()
请确保在稍后的情况下检查null
,请注意后者还有一个问题,即不说第一个对象何时是null
,但这是另一天的问题。< / p>
答案 1 :(得分:0)
我不确定vb,但在c#中有一个arr.First()方法将返回第一个集合元素,或者你可以alfuy做arr.ToArray()[0]或arr.ToList()[0] < / p>
答案 2 :(得分:0)
你的陈述是否错误?不应该是:
Dim arr = From ctl In ContainerCtl.Controls.Cast(Of Control)()
Where (ctl.Enabled = True) AndAlso _
(Not TypeOf ctl Is Label) AndAlso _
(Not TypeOf ctl Is Panel) AndAlso _
(Not TypeOf ctl Is GroupBox) AndAlso _
(Not TypeOf ctl Is C1.Win.C1FlexGrid.C1FlexGrid AndAlso bSkipGrid)
Order By ctl.TabIndex
Select ctl
然后致电
arr.First()
答案 3 :(得分:0)
最后我决定简单地使用For Each Loop并获取第一个有效元素。我从未弄清楚为什么First()从未奏效。我使用了所有提到的技术而没有运气。
感谢所有的建议!
答案 4 :(得分:0)
因为你有Option Infer Off
。打开项目属性并设置Option Infer On
或将Option Infer On
添加到代码文件的顶部。