Windowsフォームアプリケーション内の特定の子コントロールへのアクセス
多くの場合、開発者はWindowsフォームアプリケーション内の特定のタイプのすべてのコントロールを見つける必要があります。 この記事では、このタスクを達成するためのいくつかの効果的な方法の概要を説明しています。
メソッド1:直接型アクセス
この単純なアプローチは、特定のタイプに一致するコントロールに直接アクセスするために、フォームのプロパティを活用します。 たとえば、すべてのテキストボックスを取得するには:Controls
<code class="language-csharp">Control[] textboxes = this.Controls.OfType<TextBox>().ToArray();</code>
メソッド2:linq式
代わりに、LINQ式は、タイプに基づいてコントロールをフィルタリングする簡潔な方法を提供します。 次のコードスニペットでは、すべてのボタンを取得します:
<code class="language-csharp">var buttons = from ctrl in this.Controls where ctrl.GetType() == typeof(Button) select ctrl;</code>
メソッド3:再帰検索
ネストされたコントロールを使用したシナリオの場合、再帰機能が必要です。この関数はすべてのコントロールを繰り返し、指定されたタイプのコントロールを返します:
<code class="language-csharp">public IEnumerable<Control> GetAllControlsOfType(Control parent, Type type) { foreach (Control ctrl in parent.Controls) { if (ctrl.GetType() == type) yield return ctrl; foreach (Control child in GetAllControlsOfType(ctrl, type)) yield return child; } }</code>使用法:
<code class="language-csharp">var textboxes = GetAllControlsOfType(this, typeof(TextBox));</code>
適切な方法を選択
最良のアプローチは、フォームの構造の複雑さに依存します。 ダイレクトタイプアクセスは単純なフォームに最適ですが、LINQと再帰的方法は、ネストされたコントロールを備えたフォームに適しています。以上がWindowsフォームで特定の子コントロールを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。