在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中文網其他相關文章!