循环文本框

循环文本框

我有一个winforms应用程序,在屏幕上有37个文本框。每一个都按顺序编号:

DateTextBox0DateTextBox1 ...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 I want to loop through the textboxes and assign values based on the 'i' value
   DateTextBox(daysOffset + i) = m_MonthStartDate.AddDays(i).Day.ToString();}

让我澄清一下,这些文本框出现在单独的面板上(其中37个)。因此,为了让我循环使用foreach,我必须遍历主控件(面板),然后遍历面板上的控件。它开始变得复杂。

有关如何将此值分配给文本框的任何建议?


扬帆大鱼
浏览 558回答 3
3回答

慕桂英3389331

要以递归方式获取指定类型的所有控件和子控件,请使用以下扩展方法:public&nbsp;static&nbsp;IEnumerable<TControl>&nbsp;GetChildControls<TControl>(this&nbsp;Control&nbsp;control)&nbsp;where&nbsp;TControl&nbsp;:&nbsp;Control{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;children&nbsp;=&nbsp;(control.Controls&nbsp;!=&nbsp;null)&nbsp;?&nbsp;control.Controls.OfType<TControl>()&nbsp;:&nbsp;Enumerable.Empty<TControl>(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;children.SelectMany(c&nbsp;=>&nbsp;GetChildControls<TControl>(c)).Concat(children);}用法:var&nbsp;allTextBoxes&nbsp;=&nbsp;this.GetChildControls<TextBox>();foreach&nbsp;(TextBox&nbsp;tb&nbsp;in&nbsp;allTextBoxes){ &nbsp;&nbsp;&nbsp;&nbsp;tb.Text&nbsp;=&nbsp;...;}

蝴蝶不菲

您可以循环显示表单中的所有控件,如果它是“文本框”,则逐一返回它们的完整列表。public&nbsp;List&nbsp;GetTextBoxes(){&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;textBoxes&nbsp;=&nbsp;new&nbsp;List();&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(Control&nbsp;c&nbsp;in&nbsp;Controls){&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(c&nbsp;is&nbsp;TextBox){&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBoxes.add(c);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;return&nbsp;textBoxes;&nbsp;&nbsp;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP