Can I have a method returning IEnumerator<T> and use it in a foreach loop?
"I need to set the height of every textbox on my form, some of which are nested within other controls. I thought I could do something like this:
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; } } }
Using it like this:
foreach(TextBox textBox in FindTextBoxes(this)) { textBox.Height = height; }
But of course the compiler spits its dummy, because foreach expects an IEnumerable rather than an IEnumerator.
Is there a way to do this without having to create a separate class with a GetEnumerator() method?"
|