Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Классы Application и Form
Собственные функциональные возможности класса Form
Класс Form добавляет к унаследованным свои свойства, методы и события. Рассмотрим некоторые из них.
Метод | Описание |
---|---|
Activate() | Активизирует форму и предоставляет ей фокус ввода |
Close() | Закрывает форму |
CenterToScreen() | Размещает форму в центре экрана |
LayoutMdi() | Размещает все дочерние формы в рамках родительской формы в соответствии с перечислением MdiLayout |
ShowDialog() | Отображает форму в виде модального диалогового окна |
Событие | Описание |
---|---|
Activated | Форма получила фокус ввода |
FormClosing, FormClosed | Форма закрывается ( FormClosing ) или уже закрылась ( FormClosed ) |
Deactivate | Форма утратила текущий фокус ввода |
Load | Форма разместилась в памяти, но еще не отобразилась |
MdiChildActivate | Активизировалось дочернее окно |
Цикл существования объекта класса Form
Жизнь формы начинается тогда, когда вызывается ее конструктор, перед его передачей методу Application.Run(). После размещения объекта в динамической памяти среда генерирует событие Load. В обработчике события Load можно настроить вид и поведение формы, подготовить содержащиеся в форме дочерние элементы управления, организовать доступ к ресурсам, необходимым для работы формы - то есть все то, что можно сделать в конструкторе формы.
Следующим генерируется событие Activated (активизированный). Оно генерируется тогда, когда форма получает фокус ввода. При потере формой фокуса ввода генерируется событие Deactivate. То и другое события происходят всякий раз, когда пользователь переходит от одного приложения рабочего стола к другому.
Пара событий FormClosing и FormClosed генерируются, когда пользователь хочет закрыть форму. Событие FormClosing генерируется первым и дает возможность спросить пользователя, действительно ли он хочет покинуть приложение. Оно работает в паре с делегатом System.ComponentModel.FormClosingEventHandler, определяющим в качестве аргумента экземпляр класса System.ComponentModel.FormClosingEventArgs со свойством Cancel. Если в обработчике установить для этого свойства значение true, форма не закроется и возвратится к нормальному состоянию. Если установить значение false, то форма будет закрыта и сгенерируется событие FormClosed.
Для проверки сказанного приведем пример.
-
Измените в проекте MyEventHandler код файла GeneralForm.cs на следующий
using System; using System.Windows.Forms; using System.Drawing; using System.ComponentModel; using EnumDialogResult = System.Windows.Forms.DialogResult; namespace MyEventHandler { class GeneralForm : Form { string lifeTimeInfo = ""; // Вспомогательное поле public GeneralForm() { // Подписка на события this.FormClosing += new FormClosingEventHandler(OnClosing); this.Load += new EventHandler(OnLoad); this.FormClosed += new FormClosedEventHandler(OnClosed); this.Activated += new EventHandler(OnActivated); this.Deactivate += new EventHandler(OnDeactivate); } void OnClosing(object sender, FormClosingEventArgs e) { EnumDialogResult result; result = MessageBox.Show( "Вы действительно хотите закрыть приложение?", "Событие Closing формы", MessageBoxButtons.YesNo); if (result == EnumDialogResult.No) e.Cancel = true; else { e.Cancel = false;// Продолжить закрытие this.Hide();// Скрыть форму до закрытия } lifeTimeInfo += "Произошло событие Closing\n"; } void OnLoad(object sender, EventArgs e) { lifeTimeInfo += "Произошло событие Load\n"; } void OnClosed(object sender, FormClosedEventArgs e) { lifeTimeInfo += "Произошло событие Closed"; MessageBox.Show(lifeTimeInfo, "Отчет о событиях"); } void OnActivated(object sender, EventArgs e) { lifeTimeInfo += "Произошло событие Activated\n"; } void OnDeactivate(object sender, EventArgs e) { lifeTimeInfo += "Произошло событие Deactivate\n"; } } }Листинг 12.7 . Код файла GeneralForm.cs
Результат выполнения будет таким
Формы класса System.Windows.Forms.Form
Консольное приложение - когда программа создает единственное окно ввода-вывода и принимает ввод только с клавиатуры (консольный ввод), а вывод - экран или принтер.
Windows -приложение - когда взаимодействие с пользователем организуется через оконный интерфейс, где наряду с клавиатурой интенсивно используется мышь и другие манипуляторы. Самое существенное отличие от консольного приложения состоит в том, что программа взаимодействует с клавиатурой, мышью и другими внешними устройствами не напрямую, а через события.
Библиотека классов позволяет создавать консольные- и Widows-приложения. Причем проект одновременно может содержать и те и другие. Тип проекта определяется настройками компилятора через оболочку VS.NET
Настройка заставляет компилятор помечать приложение определенным флажком, показывающим операционной системе, как нужно загружать и выполнять приложение. Если исполняемый файл помечен как консольное приложение, Windows при запуске приложения создает окно командной строки, в котором программа запускается и выводит информацию "строка за строкой".
Если исполняемый файл помечен как приложение Windows, то окно командной строки не создается и программа ничего не выводит на консоль. Но разработчик может разрабатывать Widows -приложение как консольное для удобства отладки, поскольку в такой программе он может использовать операторы вывода, чтобы узнать состояние переменных в любом месте (вместо класса System.Diagnostics.Debug ). При этом отладочная информация будет выводиться в окно командной строки. На завершающем этапе перед представлением заказчику следует убрать все консольные операторы и перекомпилировать проект как Windows -приложение.
Создание заготовки Windows-приложения для написания кода вручную
Написание кода вручную с нуля - наш лозунг на этапе обучения !!!
Мы для изучения C# будем стремиться писать код вручную и нам понадобятся пространства имен как минимум
using System; using System.Windows.Forms; using System.Drawing;
Можно вводить свои псевдонимы пространства имен, например
using SYSTEM = System; using FORMS = System.Windows.Forms; using DRAWING = System.Drawing;
Для поддержки проектов в ссылках компилятора должны быть ссылки на одноименные библиотеки.
-
Создайте пустое решение с именем Application
-
Добавьте новый проект
- Тип проекта C#, имя FirstProject, пустой проект ( Empty Project ), чтобы мастер не генерировал никакой код
-
Добавьте к проекту ссылки на библиотеки, необходимые компилятору
Добавим самый минимум необходимых библиотек
System.dll System.Drawing.dll System.Windows.Forms.dll
После щелчка на кнопке OK в окне Solution Explorer появятся добавленные ссылки на соответствующие библиотеки
-
Добавьте пустой класс к проекту
выбрав шаблон Class и задав имя ShowForm
Мастер сгенерирует код заготовки класса
using System; namespace FirstProject { /// /// Summary description for ShowForm. /// public class ShowForm { public ShowForm() { // // TODO: Add constructor logic here // } } }Листинг 12.8 . Заготовка класса C#
- Попробуем откомпилировать проект и мы получим ошибку, что в приложении нет точки входа
Program 'FirstProject.exe' does not have an entry point defined (Программе 'FirstProject.exe' не определяли точку входа)
Точкой входа в приложение Windows Forms C# является функция Main(). Эта функция обязательно должна быть членом любого класса (метод Main ), поскольку глобальных функций в C# нет. Она обязательно должна быть статической.
static void Main(string[] args) {...} |
public static void Main(string[] args) {...} |
public static void Main() {...} |
private static void Main(string[] args) {...} |
private static void Main() {...} |
static int Main(string[] args) {... return 0; } |
public static int Main(string[] args) {... return 0; } |
public static int Main() {... return 0; } |
private static int Main(string[] args) {... return 0; } |
private static int Main() {... return 0; } |
- Добавим в приложение функцию Main()
using System; namespace FirstProject { public class ShowForm { public ShowForm() { } static void Main() { } } }Листинг 12.9 . Пустая точка входа
При запуске приложения система создаст пустое окно консольного вывода и завершит работу. Если выполнить запуск командой Debug/Start Without Debugging (Ctrl+F5), то приложение будет ждать нажатия любой клавиши, затем завершится.
В традиционных Windows -приложениях окна называются окнами, а в .NET - формами (аналогично исполнимый файл и сборка ). Для создания формы понадобится класс
System.Windows.Forms.Form
Этот класс является наследником целой цепочки классов, которую можно увидеть в окне Object Browser
Кстати, в C# разрешено только одиночное наследование, а множественное наследование, как это принято в C++,- запрещено.