|
Прошел курс. Получил код 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. Те же свойства родителя (контейнера) влияют сразу на все дочерние элементы. Невидимым или недоступным элемент становится только для пользователя, но в составе программы остается полноценным элементом и продолжает работать под ее контролем.

