我需要设置表单上每个文本框的高度,其中一些嵌套在其他控件中。我以为我可以做这样的事情:
private static IEnumerator<TextBox> FindTextBoxes(Control rootControl)
{
foreach (Control control in rootControl.Controls)
{
if (control.Controls.Count > 0)
{
// Recursively search for any TextBoxes within each child control
foreach (TextBox textBox in FindTextBoxes(control))
{
yield return textBox;
}
}
TextBox textBox2 = control as TextBox;
if (textBox2 != null)
{
yield return textBox2;
}
}
}
像这样使用它:
foreach(TextBox textBox in FindTextBoxes(this))
{
textBox.Height = height;
}
但是编译器当然会吐出它的假人,因为foreach需要一个IEnumerable而不是IEnumerator。
有没有办法做到这一点而不必使用GetEnumerator()方法创建一个单独的类?