如何通过foreach
更改winform中文本框的所有bordertyle或更短的内容,然后列出每个文本框并更改它们。
答案 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);