ホームページ > バックエンド開発 > C++ > WinForms アプリケーションの複数のパネル上のテキストボックスを効率的にループするにはどうすればよいですか?

WinForms アプリケーションの複数のパネル上のテキストボックスを効率的にループするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-07 13:52:40
オリジナル
928 人が閲覧しました

How Can I Efficiently Loop Through TextBoxes on Multiple Panels in a WinForms Application?

Winforms アプリケーションでのテキストボックスのループ

Winforms アプリケーションでは、テキストボックスのコレクションを反復処理する必要がある状況が発生することがあります。画面上で。これらの各テキスト ボックスには、次のように連続番号を付けることができます。

DateTextBox0
DateTextBox1
...
DateTextBox37
ログイン後にコピー

これらのテキスト ボックスに値を割り当てるには、次のアプローチを検討できます。

int month = MonthYearPicker.Value.Month;
int year = MonthYearPicker.Value.Year;
int numberOfDays = DateTime.DaysInMonth(year, month);

m_MonthStartDate = new DateTime(year, month, 1);
m_MonthEndDate = new DateTime(year, month, numberOfDays);

DayOfWeek monthStartDayOfWeek = m_MonthStartDate.DayOfWeek;
int daysOffset = Math.Abs(DayOfWeek.Sunday - monthStartDayOfWeek);

for (int i = 0; i <= (numberOfDays - 1); i++)
{
    // Here is where you want to loop through the textboxes and assign values based on the 'i' value
    // DateTextBox(daysOffset + i) = m_MonthStartDate.AddDays(i).Day.ToString();
}
ログイン後にコピー

ただし、アプリケーションではこれらのテキストボックスは別のパネルに配置されるため、さらに複雑さが増します。これらのコントロールを効果的にループするには、拡張メソッドを利用できます。

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>();
foreach (TextBox tb in allTextBoxes)
{
    tb.Text = ...;
}
ログイン後にコピー

この拡張メソッドを使用すると、個別のパネル上のすべてのテキストボックスを効率的にループし、目的のロジックに従って値を割り当てることができます。

以上がWinForms アプリケーションの複数のパネル上のテキストボックスを効率的にループするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート