Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Класс Control и стандартные элементы управления (обзор)
-
Заполните файлы следующим кодом
using System; using System.Windows.Forms; namespace MyProject { class MainForm : Form { const int MAX_BUTTON = 5; // Число кнопок public MainForm() { // Настраиваем консольное окно Console.ForegroundColor = ConsoleColor.White; // Регистрируем событие загрузки формы this.Load += new EventHandler(MainForm_Load); } // Создаем элементы управления в обработчике события Load формы void MainForm_Load(object sender, EventArgs e) { // Создаем кнопки for (int i = 0; i < MAX_BUTTON; i++) { Button btn = new Button(); // Создали кнопку this.Controls.Add(btn);// Отдали кнопку форме } Console.WriteLine("Создано кнопок: {0}", this.Controls.Count); // Уничтожаем кнопки int count = 0; // Локальная переменная Control[] control = new Control[this.Controls.Count]; // Проводим предварительное обследование коллекции в foreach foreach (Control ctrl in this.Controls) { if (ctrl is Button) { control[count] = ctrl;// Сохраняем ссылку в массиве count++; } } // Уничтожаем кнопки по найденым ссылкам for (int i = 0; i < count; i++) this.Controls.Remove(control[i]); Console.WriteLine("Удалено кнопок: {0}", count); // Еще раз создаем кнопки for (int i = 0; i < MAX_BUTTON + 1; i++) { Button btn = new Button(); // Создали кнопку btn.Parent = this; // Отдали форме другим способом } Console.WriteLine("\nСоздано кнопок: {0}", this.Controls.Count); // Уничтожаем кнопки count = 0; // Сбросили счетчик control = new Control[this.Controls.Count];// Переназначили массив // Проводим предварительное обследование коллекции в for for (int i = 0; i < this.Controls.Count; i++) { Control ctrl = this.Controls[i]; if (ctrl is Button) { control[count] = ctrl; count++; } } // Уничтожаем кнопки по найденым ссылкам for (int i = 0; i < count; i++) control[i].Parent = null;// Уничтожаем другим способом Console.WriteLine("Удалено кнопок: {0}", count); for (int i = 0; i < MAX_BUTTON + 2; i++) { Button btn = new Button(); // Создали кнопку btn.Click += btn_Click;// Зарегистрировали общий обработчик btn.Parent = this; // Отдали форме } Console.WriteLine("\nСоздано кнопок: {0}", this.Controls.Count); } // Уничтожение кнопок интерактивно int count = 0; // Поле void btn_Click(object sender, EventArgs e) { this.Controls.Remove((Control)sender); Console.WriteLine("{0}) Удалили кнопку щелчком на ней", ++count); } } }Листинг 13.1 . Код файла MainForm.cs
using System; using System.Windows.Forms; namespace MyProject { class EntryPoint { static void Main() { Application.EnableVisualStyles(); Application.Run(new MainForm()); } } }Листинг 13.2 . Код файла Program.cs
Результат работы приведенного кода будет таким
Поскольку все элементы управления произошли от класса Control, а он определяет свойство Controls, то любой элемент управления имеет это родительское свойство и может быть родителем. Но не многие наследники Control используются программистами в качестве родителей. Обычно элементы управления используются в качестве дочерних элементов формы.
Class Control имеет булево свойство TabStop, которое позволяет контейнерным элементам управлять фокусом ввода своих дочерних элементов с помощью клавиши Tab. Фокус ввода способны получать только те дочерние объекты, у которых свойство TabStop установлено в true. Порядок получения фокуса определяется свойством Control.TabIndex дочерних элементов контейнера или выполняется в порядке их расположения в коллекции (в порядке их добавления в набор, Z -порядок: последний добавленный видится верхним). Элемент управления сдвигается в Z -последовательности на первое или последнее место своими методами BringToFront() или SendToBack() соответственно.
Дочерние элементы управления одного контейнера (родителя) называются родственными.
По умолчанию все элементы управления рождаются видимыми и доступными пользователю. Видимость элемента управления определяется свойством Visible, а доступность - Enabled. Те же свойства родителя (контейнера) влияют сразу на все дочерние элементы. Невидимым или недоступным элемент становится только для пользователя, но в составе программы остается полноценным элементом и продолжает работать под ее контролем.