【问题标题】:how to use foreach loop for clear the all textboxes?如何使用 foreach 循环清除所有文本框?
【发布时间】:2013-10-03 08:51:17
【问题描述】:
 public void clear()
  {
    lblage.Text = "";
    lblclosingbirds.Text = "";
    lbltypeoffeed.Text = "";
    lbltypeoffeedf.Text = "";
    lblstdfeed.Text = "";
    lblstdfeedf.Text = "";
    lblstdhd.Text = "";
    lblstdhe.Text = "";
    lblExpeggs.Text = "";
    lblbirdsf.Text = "";
    txtacteggs.Text = "";
    txtactfeed.Text = "";
    txtactfeedf.Text = "";      
    txtfemaleclosingstock50.Text = "";
    txtfemaleclosingstock70.Text = "";
    txtmale50kgcstock.Text = "";
    txtmale70kgscstock.Text = "";
    txtmort.Text = "";
    txtmortf.Text = "";
    txtuseeggs.Text = "";
    ddlFemaleFeedtype.SelectedValue = "0";
    ddlMaleFeedtype.SelectedValue = "0";

}

如何使用 foreach 循环方法替换为 clear()..请告诉我..任何人... 是否可以编写 foreach 循环...请告诉我

【问题讨论】:

    标签: asp.net c#-4.0


    【解决方案1】:
    void ClearAllControlsRecursive(Control container)
    {
        foreach(var control As Control in container.Controls)
        {
            if(typeof control is TextBox)
            {
                ((TextBox)control).Text = String.Empty;
            }
            if(control.HasControls())
            {
                ClearAllControlsRecursive(control);  
            }
        }
    }
    

    然后像这样调用这个方法:

    ClearAllControlsRecursive(yourContainer);
    

    您还可以打开控件类型并相应地清除值。

    【讨论】:

    • foreach(var control As Control in (pnl.HasControls())) {}
    • 不,您需要将 for 循环放在一个方法中,该方法接受一个容器的参数。然后,您可以使其递归。我用一个例子编辑了我的答案。
    • 那么你应该在这个网站上问另一个问题。但在您这样做之前,请确保您确实尝试对其进行调试和编码。这不是一个“做我的功课”的网站。
    • 更新了代码,Controls 是属性,不是方法。只需删除“()”,它就会工作......
    【解决方案2】:
    void ClearAllControlsRecursive(Control container)
    {
        foreach (var control in container.Controls)
        {
    
    
    
            if (control is TextBox)
            {
                ((TextBox)control).Text = String.Empty;
            }
    
    
        }
    }
    

    我把这个方法称为...

    ClearAllControlsRecursive(panel1);
    

    【讨论】:

      【解决方案3】:

      你可以这样试试

      foreach (object control in form1.Controls) {
          if (control is TextBox) {
              control.Text = "";
          }
      }
      

      【讨论】:

      • 我正在使用 .aspx 页面......所以......它是如何工作的......你能在 aspx.cs 页面中告诉我......它没有使用 shekhar
      • 您的代码在 Windows 窗体应用程序中很有用,但在 aspx 页面中......它不起作用 shekhar..so..如何在 aspx 页面中实现
      • 你能换一种说法吗?
      【解决方案4】:

      你可以使用这个扩展方法:

      public static IEnumerable<TControl> GetChildControls(this Control control) where TControl : Control
          {
              var children = (control.Controls != null) ? control.Controls.OfType<TControl>() : Enumerable.Empty<TControl>();
              return children.SelectMany(c => GetChildControls(c)).Concat(children);
          }
      

      使用:

      foreach (TextBox tb in this.GetChildControls<TextBox>())
      {
          tb.Text = String.Empty;
      }
      

      here 是一个代码(回答问题),用于清除表单上的所有控件。

      另一种方法

      yourForm.Controls.OfType<TextBox>().ToList().ForEach(textBox => textBox.Clear());
      

      【讨论】:

        猜你喜欢
        • 2012-10-17
        • 2015-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多