Перемещение элементов управления формы в C#
В этом примере показано, как обрабатывать элементы управления различными типами в форме.
Класс Control определяет свойство Controls, которое представляет собой набор, содержащий ссылки на элементы управления внутри элемента управления. Например, коллекция Controls формы содержит ссылки на элементы управления в форме.
Обратите внимание, что коллекция содержит только элементы управления непосредственно , содержащиеся в родительском элементе. Например, предположим, что форма содержит панель Panel, а панель содержит PictureBox. Затем панель Panel находится в коллекции Controls формы, но PictureBox нет. в этом случае PictureBox содержится в коллекции элементов управления Panel.
Прохождение через коллекцию Controls легко. Например, когда вы нажимаете кнопку «Все» этой программы, следующий код проходит через все элементы формы.
private void btnAll_Click(object sender, EventArgs e) { lstControls.Items.Clear(); foreach (Control control in Controls) lstControls.Items.Add(control.Name); }
Этот код очищает ListBox программы и затем проходит через элементы формы, добавляя их имена в ListBox.
Это очень легко. Многие не понимают, что коллекция Controls имеет общий метод OfType, который фильтрует коллекцию и возвращает IEnumerable, содержащий объекты, которые соответствуют конкретный тип.
Например, когда вы нажимаете кнопку Button программы, выполняется следующий код.
private void btnButton_Click(object sender, EventArgs e) { lstControls.Items.Clear(); foreach (Button btn in Controls.OfType
Этот код очищает ListBox программы. Затем он использует метод Controls коллекции ControlType для прокрутки элементов формы Button формы, добавляя их имена в ListBox . р>
Метод OfType выбирает элементы управления, которые можно преобразовать в указанный вами тип. Например, при нажатии кнопки ScrollBar выполняется следующий код.
private void btnScrollBar_Click(object sender, EventArgs e) { lstControls.Items.Clear(); foreach (ScrollBar sbar in Controls.OfType()) lstControls.Items.Add(sbar.Name); }