複数のテキストボックスの反復
Windows フォーム アプリケーション内で、それぞれに連続した名前を持つ 37 個のテキストボックスをループするという課題が発生しました。 「DateTextBox」という名前の後に数値の接尾辞が続きます。タスクには、ループ カウンター 'i' に基づいてこれらのテキスト ボックスに値を割り当てることが含まれます。
再帰的コントロールの取得
これに効果的に対処するには、次のような拡張メソッドを利用します。特定のタイプのすべてのコントロールとサブコントロールを再帰的に取得します。そのコードは次のとおりです:
public static IEnumerable<TControl> GetChildControls<TControl>(this Control control) where TControl : Control { var children = (control.Controls != null) ? control.Controls.OfType<TControl>() : Enumerable.Empty<TControl>(); return children.SelectMany(c => GetChildControls<TControl>(c)).Concat(children); }
実装
このメソッドを利用するには、フォーム内に存在するすべてのテキストボックスを取得できます:
var allTextBoxes = this.GetChildControls<TextBox>();
テキストボックスのリストを取得したら、各ボックスをループして、テキストボックスに基づいて適切な値を割り当てることができます。 'i' カウンタ:
foreach (TextBox tb in allTextBoxes) { tb.Text = ...; }
このアプローチを実装すると、ネストされたパネル内に配置されている場合でも、多数のテキストボックスを効率的に繰り返し、値を動的に割り当てることができます。
以上がWindows フォーム アプリケーションで、複数の連続して名前が付けられたテキストボックスを効率的に繰り返して値を割り当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。