using System.Drawing;
using System.Windows.Forms;
namespace ControlsByHand {
class MainWindow: Form {
// Члены-переменные элементов формы.
private TextBox firstNameBox = new TextBox;
private Button btnShowControls = new Button;
public MainWindow {
// Конфигурация формы.
this.Text = "Простые элементы управления";
this.Width = 300;
this.Height = 200;
CenterToScreen;
// Добавление в форму нового текстового окна.
firstNameBox.Text = "Привет";
firstNameBox.Size = new Size(150, 50);
firstNameBox.Location = new Point(10, 10);
this.Controls.Add(firstNameBox);
// Добавление в форму новой кнопки.
btnShowControls.Text = "Щелкните здесь";
btnShowControls.Size = new Size(90, 30);
btnShowControls.Location = new Point(10, 10);
btnShowControls.BackColor = Color.DodgerBlue;
btnShowControls Click += new EventHandler(btnShowControls_Clicked);
this Controls.Add(btnShowControls);
}
// Обработка события Click кнопки.
private void.btnShowControls_Clicked(object sender, EventArgs e) {
// Вызов ToString для каждого элемента управления
// из коллекции Controls формы.
string ctrlInfo = "";
foreach (Control c in this.Controls) {
ctrlInfo += string.Format.("Элемент: {0}\n:", s.ToString);
}
MessageBox.Show(ctrlInfo, "Элементы управления, помещенные в форму");
}
}
}
Добавьте в пространство имен ControlsByHand еще один класс, реализующий метод Main программы.
class Program {
public static void Main(string[] args) {
Application.Run(new MainWindow);
}
}
Теперь скомпилируйте полученный файл C# в командной строке, используя следующую команду.
csc /target:winexe *.cs
Запустив приложение и щелкнув на кнопке формы, вы увидите окно сообщения, в котором будет представлен список всех элементов, помещенных в эту форму (рис. 21.1).
Рис. 21.1. Взаимодействие с коллекцией элементов управления формы
Тип Control.ControlCollection
Процедура добавления нового элемента в форму исключительно проста, но свойство Controls требует дополнительного обсуждения. Это свойство возвращает ссылку на вложенный класс с именем ControlCollection, определенный в рамках класса Control. Вложенный тип ControlCollection содержит все элементы управления, помещенные в данную форму. Вы можете получить ссылку на эту коллекцию, чтобы "рассмотреть список" дочерних элементов формы.
// Получение доступа к вложенной коллекции ControlCollection формы.
Control.ControlCollection coll = this.Controls;
Имея ссылку на эту коллекцию, вы можете манипулировать ее содержимым, используя члены, описания которых предлагаются в табл. 21.1.
Таблица 21.1. Члены ControlCollection
Член | Описание |
---|---|
Add AddRange | Используются для добавления в коллекцию нового производного от Control типа (или массива типов) |
Clear | Удаляет все элементы из коллекции |
Count | Возвращает число элементов, имеющихся в коллекции |
GetEnumerator | Возвращает интерфейс IEnumerator для данной коллекции |
Remove RemoveAt | Используются для удаления элемента из коллекции |