2

「btnOverlay」で始まる名前を持つ別のコントロール内のすべてのコントロールを一覧表示したいと考えています。Controls.Find完全一致が必要なため、使用できません。これにはLINQを使用できると思いますが、あまり経験がありません。出来ますか?どうすればいいですか?

.NET 4.0 を使用しています。

4

2 に答える 2

6

LINQを使用してそれらを検索できます。

var matches = control.Controls.Cast<Control>()
                     .Where(c => c.Name.StartsWith("btnOverlay"));

を実装していないため、Cast<T>呼び出しが必要です。また、これは再帰検索を実行せず、含まれているコントロールを直接検索するだけです。再帰が必要な場合は、これをこの回答と同様の方法にリファクタリングする必要があります。ControlCollectionIEnumerable<T>IEnumerable

于 2012-08-16T17:32:45.617 に答える
1

LINQを使用しない別の方法は次のとおりです。

foreach (Control c in this.Controls)
{
    if (c.Name.StartsWith("btnOverlay"))
    {
        // Do something
    }
}

this.使用するコントロールの名前を自由に変更してください。

于 2012-08-16T21:23:55.843 に答える