循环文本框我有一个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,我必须遍历主控件(面板),然后遍历面板上的控件。它开始变得复杂。有关如何将此值分配给文本框的任何建议?
3 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
要以递归方式获取指定类型的所有控件和子控件,请使用以下扩展方法:
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 = ...;}
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
您可以循环显示表单中的所有控件,如果它是“文本框”,则逐一返回它们的完整列表。
public List GetTextBoxes(){ var textBoxes = new List(); foreach (Control c in Controls){ if(c is TextBox){ textBoxes.add(c); } } return textBoxes; }
- 3 回答
- 0 关注
- 557 浏览
添加回答
举报
0/150
提交
取消