2


1

linqを使ってすべてのコントロールを取得する方法はありますか。

私がやりたいことはそのようなものです(タブインデックスでコントロールを並べ替え):

foreach(コントロールコントロールthis.Controls.OrderBy(c => c.TabIndex){... }

Listを取得したときは、そのような種類のクエリを使用しています<…​>

私はc#と.Net 3.5を使います

1 Answer


5


+ ControlCollection +`は、 `+ IEnumerable +`ではなく、 `+ IEnumerable +`のみを実装します。 それは簡単に修正できます-+ Cast()+`への呼び出しを追加してください:

foreach (Control control in Controls.Cast()
                                    .OrderBy(c => c.TabIndex))
{
}

または、必要に応じて `+ Cast()+`を呼び出すクエリ式を使用できます。

var controls = from Control c in Controls
               orderby c.TabIndex
               select c;

foreach (Control control in controls)
{
}