- •21. Графы, основные понятия теории графов, представление графов.
- •22. Алгоритмы обхода графа: обход в глубину.
- •23. Алгоритмы обхода графа: обход в ширину.
- •24. Деревья, бинарные деревья, дерево двоичного поиска.
- •25. Алгоритмы обхода дерева.
- •26. Обработка исключений, оператор try.
- •27. Обработка исключений, операторы checked, unchecked.
- •28. Генерация собственных исключений
- •29. Работа с файловой системой: классы File и FileInfo.
- •30. Работа с файловой системой: классы Directory и DirectoryInfo.
- •31. Механизм сборки мусора, жизненный цикл объекта, поколения объектов.
- •32. Программирование под Windows, событийно-управляемая модель.
- •33. Архитектура приложений Windows Forms
- •34. Стандартные элементы управления: текстовые поля, кнопки, переключатели.
- •35. Стандартные элементы управления: списки, окна диалога.
- •36. Динамическое создание и удаление элементов управления.
- •37. Обработка событий мыши.
- •39. Делегаты. Определение и использование делегатов.
- •40. События. Событийная модель “publisher/subscribers”
- •38. Обработка событий клавиатуры.
33. Архитектура приложений Windows Forms
Большая часть средств, необходимых для создания приложений windows forms находится в пространстве имен System.Windows.Forms.
Каждое приложение Windows Forms представляет собой класс, который является производным от System.Windows.Forms.Form. Поэтому самое простое приложение будет выглядеть так:
using System;
using System.Windows.Forms;
namespace WindowsApplication4
{
public class Form1 : System.Windows.Forms.Form
{
public Form1() {}
static void Main()
{
Form1 MyForm=new Form1();
}
}
}
Каждое приложение Windows Forms обязано иметь точку входа, с которой начинается исполнение программы. Точка входа определяется реализацией метода Main(). Приведенная в примере программа создаст объект типа Form1 и сразу же завершится. Однако необходимо, чтобы приложение участвовало в цикле сообщений от операционной системы.
Приложения Windows управляются событиями. Они не производят явных вызовов функций, а ожидают когда система передаст им входные значения в виде сообщений. Цикл сообщений является частью приложений windows. Чтобы обработать сообщения для формы, необходимо вызвать метод Run() класса Application.
using System;
using System.Windows.Forms;
namespace WindowsApplication4
{
public class Form1 : System.Windows.Forms.Form
{
public Form1(){}
static void Main()
{
Form1 MyForm=new Form1();
Application.Run(MyForm); //или Application.Run(new Form1());
}
}
}
Класс Application реализует методы для управления приложением и обработки сообщений Windows. Метод Application.Run() обрабатывает сообщения от операционной системы, предназначенные для приложения. Объект MyForm передается как параметр методу Run, после чего форма отображается на экране и ждет поступления событий (от мыши, клавиатуры, других приложений).
34. Стандартные элементы управления: текстовые поля, кнопки, переключатели.
Большинство приложений предоставляют возможность пользователю вводить текст и, в свою очередь, выводят различную информацию в виде текстовых записей. Элементы TextBox, RichTextBox принимают текст, а элементы Label, StatusBar выводят ее. Для обработки введенного пользователем текста, как правило, следует нажать на один или несколько элементов из группы командных объектов.
Наряду с надписями и полями редактирования текстовой информации кнопки встречаются чаще всего в пользовательском интерфейсе приложений.
Текст надписи, расположенной на кнопке, задается с помощью свойства Text. Приложение может динамически во время своей работы блокировать и разблокировать кнопки и элементы управления, расположенные в формах. Для того чтобы заблокировать кнопку, установите значение свойства Enabled равным true. Заблокированная кнопка отображается в форме, однако не реагирует на мышь и клавиатуру, а также не создает событий.
При необходимости приложение может скрыть кнопку или другой элемент управления, установив значение свойства Visible равным false. Скрытый элемент управления не отображается в форме и не создает событий.
Рассмотрим использование события buttonsEnter. Реализуем возможность, которая заключается в том, что при наведении курсора мыши на кнопку она будет менять свой цвет на красный. Для этого добавим на форму три кнопки. В класс Form1 добавим поле oldColor, предназначенное для хранения исходного цвета фона кнопки:
Color oldColor;
Добавим исходный текст обработчика событий buttonsEnter, подключенного ко всем кнопкам нашего приложения:
private void buttonsEnter(object sender, System.EventArgs e) { Button btn = (Button)sender; oldColor = btn.BackColor; btn.BackColor = Color.Red; }
Переключатели с зависимой фиксацией (RadioButton). Такие флажки объединяются в группы, причем в отмеченном состоянии может находиться лишь один флажок из группы. Флажки с зависимой фиксацией создаются на базе класса System.Windows.Forms.RadioButton.
Переключатели с независимой фиксацией (CheckBox). Флажки с независимой фиксацией работают независимо друг от друга. При этом не имеет никакого значения, расположены они внутри панелей GroupBox и Panel, или непосредственно в окне приложения. Эти флажки создаются на базе класса System.Windows.Forms.CheckBox.
Как правило, флажки с независимой фиксацией используется в программе, для того чтобы задавать какие-либо режимы, которые можно устанавливать независимо друг от друга.
Такие флажки могут находиться во включенном или выключенном состоянии, а также в третьем, неопределенном состоянии.