为了账号安全,请及时绑定邮箱和手机立即绑定

循环文本框

循环文本框

扬帆大鱼 2019-08-08 16:59:17
循环文本框我有一个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 = ...;}


查看完整回答
反对 回复 2019-08-08
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您可以循环显示表单中的所有控件,如果它是“文本框”,则逐一返回它们的完整列表。

public List GetTextBoxes(){   
    var textBoxes = new List();   
        foreach (Control c in Controls){   
            if(c is TextBox){   
                textBoxes.add(c);   
        }   
    }   return textBoxes;   }


查看完整回答
反对 回复 2019-08-08
  • 3 回答
  • 0 关注
  • 557 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信