Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menggelung Dengan Cekap Melalui Kotak Teks pada Berbilang Panel dalam Aplikasi WinForms?

Bagaimanakah Saya Boleh Menggelung Dengan Cekap Melalui Kotak Teks pada Berbilang Panel dalam Aplikasi WinForms?

Barbara Streisand
Lepaskan: 2025-01-07 13:52:40
asal
977 orang telah melayarinya

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

Gelung Melalui Kotak Teks dalam Aplikasi Winforms

Dalam aplikasi Winforms, anda mungkin menghadapi situasi di mana anda perlu mengulangi koleksi kotak teks pada skrin. Setiap kotak teks ini mungkin dinomborkan secara berurutan, seperti:

DateTextBox0
DateTextBox1
...
DateTextBox37
Salin selepas log masuk

Untuk memberikan nilai pada kotak teks ini, anda boleh mempertimbangkan pendekatan berikut:

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();
}
Salin selepas log masuk

Walau bagaimanapun, aplikasi anda memperkenalkan lapisan kerumitan tambahan kerana kotak teks ini terletak pada panel berasingan. Untuk mengulangi kawalan ini dengan berkesan, anda boleh menggunakan kaedah sambungan:

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);
}
Salin selepas log masuk

Dengan kaedah sambungan ini, anda boleh mendapatkan semula semua kawalan dan sub-kawalan jenis yang ditentukan secara rekursif. Contoh penggunaan:

var allTextBoxes = this.GetChildControls<TextBox>();
foreach (TextBox tb in allTextBoxes)
{
    tb.Text = ...;
}
Salin selepas log masuk

Dengan menggunakan kaedah pelanjutan ini, anda boleh mengelilingi semua kotak teks pada panel berasingan anda dengan cekap dan memberikan nilai kepada mereka mengikut logik yang anda inginkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggelung Dengan Cekap Melalui Kotak Teks pada Berbilang Panel dalam Aplikasi WinForms?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan