Action<Control.ControlCollection> func = null;
объявляет делегата, который принимает в качестве аргумента Control.ControlCollection
.
func = (controls) => {... }
назначает делегату тело анонимного метода, которое при выполнении выполняет действие внутри {...}
.
func(Controls);
выполняет делегат, передавая коллекцию Controls
формы, которая содержитвсе элементы управления верхнего уровня в форме.
Тело метода анонимного метода перечисляет элементы управления в коллекции ControlCollection и очищает все текстовые поля.Для элементов управления, которые не являются TextBox
элементами управления, он возвращается в себя и проверяет элементы управления, содержащиеся в элементе управления.Таким образом, если есть GroupBox
или какой-либо другой контейнер элемента управления, дочерние элементы этих элементов управления будут искать TextBoxes.
Это можно переписать проще (без делегатов и анонимных методов), выполнив следующие действия:
private void ClearTextBoxes()
{
ClearTextBoxes(Controls);
}
private void ClearTextBoxes(Control.ControlCollection controls) {
foreach (Control control in controls)
if (control is TextBox)
(control as TextBox).Clear();
else
ClearTextBoxes(control.Controls);
};