|
Прошел курс. Получил код 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++,- запрещено.










