【问题标题】:Change all TextBox BorderStyle in my winform更改我的winform中的所有TextBox BorderStyle
【发布时间】:2013-09-18 06:44:44
【问题描述】:

如何通过foreach更改winform中文本框的所有边框样式

或者更短的内容,然后列出每个文本框并更改它们。

【问题讨论】:

    标签: c# textbox


    【解决方案1】:

    您可以遍历表单的控件:

    foreach(Control c in myForm.Controls)
    { 
        if(c is TextBox)
        { 
             ((TextBox)c).BorderStyle = yourStyle;
        }
    }
    

    编辑

    如果您有一些可以包含文本框的容器(例如面板、tabControls、ecc..),您可以递归迭代:

    private void checkControl(Control control)
    {
        foreach (Control c in control.Controls)
        {
            var textBox = c as TextBox;
            if (textBox != null)
                textBox.BorderStyle = BorderStyle.FixedSingle;
            else
                checkControl(c);
        }
    }
    

    并最初调用该方法:

    checkControl(this);
    

    【讨论】:

    • 唯一正确的答案,因为您应该始终使用递归(以防万一)。但是没有is,代码有点不清楚。另一件事是您可能有某些TextBox'es,您不想触摸。然后你可以使用Tagmark 一些东西。事实上,使用Tag 你甚至不需要检查它是不是TextBox
    • @Sinatr 关于is 的使用我认为这在性能方面是一个很好的做法(有关更多信息,请参阅this)。您对标签的看法是正确的,但我不知道 OP 的意图。
    【解决方案2】:
    private void SetTextBoxBorderStyle(Control ctrl)
    {
        foreach(Control c in ctrl.Controls)
        {
            if(c is TextBox)
               (c as TextBox).BorderStyle = yourStyle;
            else
               SetTextBoxBorderStyle(c);
        }
    }
    

    像这样在你的表单中调用它:

    SetTextBoxBorderStyle(this);
    

    【讨论】:

      【解决方案3】:
      public void setAllTextBoxs(Control control)
      {
          foreach (Control c in control.Controls)
              if (c is TextBox)
                  (c as TextBox).BorderStyle = BorderStyle.FixedSingle;
              else if(c.HasChildren)
                  setAllTextBoxs(c);
      }
      

      Lambda 等效...老忠实的一班轮 XD

      public void setAllTextBoxs(Control control)
      {
          control.Controls.Cast<Control>().ToList().ForEach(c => { if (c is TextBox) (c as TextBox).BorderStyle = BorderStyle.FixedSingle; else if (c.HasChildren) setAllTextBoxs(c); });
      }
      

      然后这样称呼它:

      setAllTextBoxs(this);
      

      【讨论】:

        猜你喜欢
        • 2012-02-27
        • 1970-01-01
        • 1970-01-01
        • 2014-02-22
        • 2013-04-18
        • 2012-12-08
        • 1970-01-01
        • 1970-01-01
        • 2011-12-02
        相关资源
        最近更新 更多