在我的winform中更改所有TextBox BorderStyle

时间:2013-09-18 06:44:45

标签: c# textbox

如何通过foreach

更改winform中文本框的所有bordertyle

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

3 个答案:

答案 0 :(得分:2)

您可以遍历表单的控件:

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

修改

如果你有一些容器可以包含TextBoxes(例如panel,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);

答案 1 :(得分:0)

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);

答案 2 :(得分:0)

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);