Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 944
Скачиваний: 1
}
Как видно из текста программы, перед загрузкой формы объявлено создание кземпляра класса OpenFileDialog. Этот объект можно было бы перенести в форму из панели элементов управления, как мы это делали в примере 25 (см. главу 4), а можно его создать программно, как в данном программном коде.
Сразу после выполнения процедуры InitializeComponent задаем текст строки аголовка формы "Windows Media Player, версия = ". При этом номер версии получаем из свойства versionInfо.
При обработке события "щелчок мышью по пункту меню" Открыть функция ShowDialog обеспечивает выбор нужного файла мультимедиа. Передача плееру имени выбранного файла происходит через свойство плеера url. Далее следует команда на проигрывание файла, хотя можно было бы предусмотреть эту команду в отдельном пункте меню. В комментарии приведена возможность проигрывания файла мультимедиа при передаче имени этого файла одной функцией оpenPlayer.
Далее по тексту программы реализованы очевидные функции в соответствуюих обработчиках событий: переход в режим полного экрана (это возможно только если плеер пребывает в состоянии проигрывания файла wmppsPlaying), Пауза, Play, ВклЗвук, ВыклЗвук, вызов меню Свойства, выход из программы.
Убедиться в работоспособности программы можно, открыв решение Player.sln в папке Player.
Пример 90. Программирование контекстной справки. Стандартные кнопки в форме
Напишем программу, демонстрирующую организацию помощи пользователю вашей программы. В данной программе предусмотрена экранная форма, которая в заголовке имеет кнопку Справка (в виде вопросительного знака) и кнопку Закрыть. Здесь реализована контекстная помощь, когда после щелчка мыши на кнопке Справка можно получить контекстную всплывающую подсказку по тому или иному элементу управления, находящемуся в форме.
Для этого обычным путем создадим новый проект из шаблона Windows Forms Application С#. получим стандартную форму. Используя панель Toolbox, добавим в форму три текстовых поля, три метки и две кнопки, как показано на рис. 12.6.
Рис. 12.6. Фрагмент работы программы с контекстной справкой
Таким образом, мы получили пользовательский интерфейс редактирования таблицы телефонов, знакомый нам из предыдущих разделов. На вкладке программного кода напишем следующий текст (листинг 12.8).
Листинг 12.8. Программирование контекстной справки
// В программе предусмотрена экранная форма, которая в заголовке имеет только
// кнопку Справка (в виде вопросительного знака) и кнопку Закрыть. Здесь
// реализована контекстная помощь, когда после щелчка мыши на кнопке Справка
// можно получить контекстную всплывающую подсказку по тому или иному элементу
// управления, находящемуся в форме.
using System.Windows.Forms;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace help
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
MaximizeBox = false; // - отмена кнопки Развернуть
MinimizeBox = false; // - отмена кнопки Свернуть
// Чтобы стиль формы содержал кнопку помощи, т. е. вопросительный знак HelpButton = true;
this.Text = "Демонстрация помощи";
button1.Text = "Следующая"; button2.Text = "Предыдущая";
textBox1.Clear(); textBox2.Clear(); textBox3.Clear();
label1.Text = "Номер п/п"; label2.Text = "ФИО";
label3.Text = "Номер телефона";
var helpProvider1 = new HelpProvider();
helpProvider1.SetHelpString(textBox1, "Здесь отображаются номера записи по порядку"); helpProvider1.SetHelpString(textBox2, "Поле для редактирования имени абонента"); helpProvider1.SetHelpString(textBox3, "Поле для ввода и отображения номера телефона"); helpProvider1.SetHelpString(button1, "Кнопка для перехода на следующую запись"); helpProvider1.SetHelpString(button2, "Кнопка для перехода на предыдущую запись");
// Назначаем, какой help-файл будет вызываться при нажатии клавиши
helpProvider1.HelpNamespace = "mspaint.chm";
}
}
}
Здесь при обработке события загрузки формы мы программируем всю помошь пользователю. Так, чтобы стиль формы содержал кнопку Справка (вопросительный знак), следует запретить в форме кнопки Развернуть и Свернуть:
MaximizeBox = false;
MinimizeBox = false;
Затем вместо них задать кнопку Справка: HelpButton = true. Далее объявляем объект helpProvider1, который мы могли бы добавить в форму, используя Toolbox. Затем для каждого из текстовых полей и кнопок задаем текст контекстной подсказки. Эта подсказка будет работать так же, как и подсказка TooITip (см. пример 8 в главе I). Свойству HelpNamespace назначаем help-файл, который будет вызываться при нажатии функциональной клавиши <F1>. Мы указали файл mspaint.chm, который является справочным для графического редактора MS Paint, встроенного в ОС Windows, т. е. он имеется на любом компьютере под управлением Windows. Формат СНМ был разработан Microsoft для гипертекстовых справочных систем. У СНМ-файлов, как правило, есть Содержание — отдельная панель со списком статей для упрощения навигации. В наличии содержания, пожалуй, и заключается главное отличие СНМ-файлов от использовавшихся ранее HLP-файлов справки Windows. Убедиться в работоспособности программы можно, открыв решение help.sln в папке Help.
Создание инсталляционного пакета для распространения программы
Допустим, вы отладили свою первую (или очередную) программу, и теперь вам надо создать дистрибутив (инсталляционный пакет) для распространения программы (дистрибуции). Инсталляционный пакет будет включать в себя набор файлов (setup.exe, *.msi, *.dll, *.tlb и т. д.). Пользователь вашей программы должен запустить setup.exe, и в режиме диалога будет происходить распаковка msi-архива, регистрация в системном реестре и проч. Для создания таких инсталляционных пакетов существует множество программ-инсталляторов, например InstallShild, InnoSetup и др. Однако можно воспользоваться непосредственно системой Visual Studio 2010. Покажем процесс создания инсталляционного пакета на примере программы управления функциями AutoCAD (см. пример 60 в главе 9).
Запустим систему Visual Studio 2010, закажем новый проект, в окне New Project раскроем узел Other Project Types и узел Setup and Deployment (Установка и распространение), а здесь выберем пункт Visual Studio Installer и шаблон Setup Project. В строке Location укажем папку, в которой будет располагаться наш инсталляционный пакет, например папку C:\New, и нажмем кнопку ОК. Далее в пункте меню Project выберем команду Add | File. Здесь добавим ехе-файл и прочие файлы, которые мы хотим поместить в msi-архив инсталляционного пакета, в нашем случае это файл ACADm.exe, также добавим файл Interop.AutoCAD.dll. При этом в окне Solution Explorer (Обозревателе решений) мы увидим зависимые от ехе-файла ссылки на tlb-, dll- и msm-файлы. В нашем случае в окне Solution Explorer появится файл ACAD.TLB. Можно также добавить еще необходимые на ваш взгляд компоненты, например какой-либо осх-файл или тестовый файл с какими-либо пояснениями. После создания дистрибутива все эти файлы окажутся внутри msi-архива.
Теперь дадим команду на непосредственное создание инсталляционного пакета Build | Build Setup1. После завершения данного процесса в папке C:\New\Debugпоявятся файлы Setup.exe и Setup1.msi. Эти файлы скопируем на какой-либо съемный носитель, например на компакт-диск или флэш-накопитель. Теперь инсталляционный пакет готов для распространения.
На компьютере вашего пользователя запустим setup.exe, далее в диалоге укажем папку, например C:\Program Files\Acadm\, и в конце диалога получим сообщение от системы о завершении инсталляции. Теперь ваша программа находится в указанной папке, в ней — ехе-файл и все связанные с ним файлы dll- и tlb-файлы. Программа зарегистрирована в системном реестре, и вы можете найти ее среди установленных программ в Панели управления в разделе Установка и удаление программ.
ГЛАВА 13 Программирование простейших Web-ориентированных приложений на Visual С# 2010
Создание Web-страницы на языке HTML. Интернет-технологии
HTML (HyperText Markup Language) — это язык для отображения информации о Web-странице в браузере: текста, изображений, анимации, ссылок на другие Web-страницы. Это язык специальных инструкций браузеру, но его нельзя назвать языком программирования в обычном понимании этого слова, поскольку он не позволяет использовать логику, с его помощью невозможно выполнить даже элементарные арифметические операции. Мы уже приводили примеры HTML-кода для отображения таблиц. В качестве примера в листинге 13.1 представлен HTML-код простейшей Web-страницы, содержащей GIF-изображение и гиперссылку для перехода на другую Web-страницу.
Листинг 13.1. HTML-код простейшей Web-страницы
http://www.mail.ru/">Перейти на почтовый сервера>р>
Здесь тег <html> описывает ваш документ как Web-страницу, выполненную в формате HTML. Тег <head> указывает на наличие текста, содержащего наименование страницы и дополнительные сведения о ней. В раздел <head> обычно вложен тег <title> для обозначения наименования страницы в строке заголовка. Наименования Web-страниц отображаются в строке заголовка окна браузера. Затем следует тег <body>, в котором размещаются: весь остальной текст, изображения, таблицы, гиперссылки и другие элементы содержимого Web-страницы. Тег <р> служит для обозначения начала нового абзаца.
Для вставки графических элементов служит тег <img>. Файл изображения image1.gif создан с помощью MS Office FrontPage. В этой программе автор задал художественно оформить текст "Весело живем!" (объект WordArt). В ответ FrontPage сгенерировал файл image1.gif. Объект WordArt можно также получить в текстовом редакторе MS Word через пункты меню Вставка | WordArt.
Для создания гиперссылки служит тег <а>. Синтаксис этого тега очевиден. Данный HTML-код записан с помощью Блокнота в файл primer.htm. На рис. 13.1 приведено отображение этого файла в браузере Internet Explorer.
Рис. 13.1. Отображение графического файла в браузере Internet Explorer
Чтобы создавать подобные Web-страницы, вовсе не обязательно знать язык разметки HTML. Можно пользоваться каким-либо редактором Web-страниц, например Microsoft Office FrontPage или Microsoft Office SharePoint Designer. Здесь интерфейс для создания Web-страницы очень похож на интерфейс текстового редактора MS Word. В крайнем случае, содержание Web-страницы можно набрать непосредственно в редакторе MS Word, но сохранить файл с расширением htm и таким образом получить Web-страницу. Кстати говоря, создавать Web-страницы на языке HTML можно также с помощью Visual Studio, для этого следует создать новый проект шаблона Empty ASP.NET Web Application и к текущему проекту добавить новый элемент (Project | Add New Item) шаблона HTML page.
Однако Web-страница, написанная только на языке разметки HTML, будет статичной, она способна лишь отображать какие-либо сведения. Вы знаете, что современная Web-страница является, по сути, программой, способной реагировать на действия пользователя, обеспечивать полноценный интерактивный режим, диалог с пользователем, работу с базой данных и т. д. Реализовать такую интерактивность можно, например, используя технологию Microsoft ASP.NET, в частности язык Visual С#2010. Технология ASP (Active Server Pages, активные страницы сервера) представляет альтернативу статичных страниц, основанных на "чистом" HTML.
Web-хостинг на платформах UNIX и Windows
Интернет можно рассматривать как совокупность связанных между собой специализированных компьютеров, включенных 24 часа в сутки, называемых хостами (от англ. host— хозяин, принимающий гостей) или серверами. Пользователи, представляющие локальные компьютеры, подключаются через провайдеров к Интернету, могут, используя URL-адреса, запрашивать те или иные Web-страницы, расположенные на различных серверах.
Web-хостинг — это услуга в Интернете по предоставлению дискового пространства и программного обеспечения для Web-страниц различных пользователей. Если ваша Web-страница написана исключительно на языке HTML, то для ее размещения в Интернете подойдет любой Web-хостинг. Однако для размещения активных Web-страниц с интерактивным содержимым различные серверы предлагают разное программное обеспечение.
Так, серверы под управлением операционных систем семейства UNIX/Linux обеспечивают Web-хостинг с использованием таких технологий как PHP, CGI, Perl, Apache, GNU C/C++, базы данных MySQL а также все возможности HTML. При этом пользователи таких Web-страниц на своих локальных (клиентских) компьютерах могут работать под управлением любых операционных систем (UNIX, Windows, Mac OS X). Как видим, в этом перечне отсутствует поддержка технологии Microsoft ASP.NET.
Хостинг на основе ASP.NET существует только на Windows-платформе. То есть этот сервер может работать, только под управлением операционной системы Windows. Это сравнительно новая технология от Microsoft, которая называется .NET Framework. Она является расширенным языком ASP. Данная платформа менее популярна, чем технология РНР. Между тем Web-страницы, написанные на языке Visual С#2010, выполняются по разным оценкам примерно в полтора-два раза быстрее, чем написанные на языке РНР.
Клиент-серверное взаимодействие на основе технологии ASP.NET
Схема работы активной Web-страницы следующая. С помощью URL-адреса Web-браузер клиентского компьютера запрашивает необходимую активную Web-страницу. В ответ Web-сервер посылает браузеру ASPX-документ, содержащий HTML-разметку и теги <asp>. ASPX-документ интерпретируется браузером клиента и представляется в виде Web-страницы. Пользователь на клиентском компьютере заполняет предложенные в этом документе формы, задает какие-либо команды.
делает запросы и т. д., а затем отсылает (например, нажимая какую-либо командную кнопку) ASPX-документ назад на сервер для выполнения. Сервер реагирует на команды пользователя (клиента), выполняя команды с помощью библиотеки DLL [расположенной на сервере, и генерируя новый ASPX-документ, содержащий HTML-разметку вместе с тегами <asp>. Теги HTML, содержащие атрибут runat= "server", выполняются на сервере. На стороне пользователя Web-браузер только лишь интерпретирует полученный от сервера HTML-поток. DLL (Dynamic-link library) — это динамически подключаемая библиотека, имеющая формат ЕХЕ-файла» в ней содержится программный код и ресурсы, используемые активной Web-страницей. С помощью библиотеки DLL реализуется весь сценарий взаимодействия с пользователем. Таким образом, вся "активность" страницы выполняется на стороне сервера, а Web-браузеру пользователя (клиента) отсылается лишь результат выполнения в виде HTML-потока.
Как получить библиотеку DLL? Ничего сложного: управляющая среда Visual Studio 2010 сама генерирует aspx-файл разметки и aspx.cs-файл программной поддержки для Web-страницы, причем aspx.cs-файл является программным кодом Visual С#2010. А для того чтобы получить dll-библиотеку, следует скомпилировать разрабатываемый проект. При этом получим новую dll-библиотеку в папке bin.
Отладка активного Web-приложения
Тот факт, что Web-страница выполняет команды пользователя на стороне сервера, затрудняет отладку Web-приложения, поскольку требует как минимум двух компьютеров: один будет работать как клиент, а другой — как сервер. На самом деле, как правило, обходятся одним компьютером. Но при этом устанавливают сервер на собственном компьютере для тестирования различных активных страниц, не выходя в Интернет. Среда Visual Studio 2010 имеет возможность использовать собственный локальнй сервер для отладки активных Web-приложений.
Прежние версии Visual Studio, например Visual Studio 2003, требовали обязательной установки локального сервера IIS (Internet Information Services) через Панель управления | Установка или удаление программ или компонентов Windows | Установка компонентов Windows. В этом случае система создавала папку C:\Inetpub\wwwroot, поддерживаемую локальным сервером, где должны были располагаться все разрабатываемые Web-приложения с интерактивным содержимым. Обращение к активным Web-страницам, расположенным в папке C:\Inetpub\wwwroot, осуществляется через задание в адресной строке браузера адреса локального сервера, например http://IocaIhost/primer.aspx. Но заметьте, что они не будут проявлять себя как активные при обращении к ним таким образом: "C:\Inetpub\wwwroot\Имястраницы".
Среда Visual Studio 2010 поддерживает обе указанные возможности отладки Web-приложения. Менять установку данных возможностей можно через пункты меню Project | имя_проекта Properties, вкладка Web. Причем по умолчанию отладка производится именно с использованием сервера Visual Studio. Это дает возможность отлаживать интерактивные Web-приложения в любой папке винчестера.
Пример 91. Создание простейшей активной Web-страницы на Visual С# 2010
Как уже отмечалось, статичные Web-страницы не способны выполнять даже элементарные арифметические действия. Создадим Web-страницу, демонстрирующую способность как раз складывать числа, введенные пользователем. И одновременно подчеркнем единый поход к разработке Windows- и Web-приложений. В обоих случаях имеем те же инструменты: форму, текстовые поля, метки, командные кнопки и проч. Таким образом, на данной разрабатываемой странице будем иметь два текстовых поля, куда пользователь будет вводить числа, командную кнопку и метку, на которую будет выводиться результат сложения двух чисел.
Для создания Web-приложения откроем Visual Studio 2010, в окне New Project на вкладке Installed Templates (Установленные шаблоны) Visual С# Web выберем шаблон Empty ASP.NET Web Application. В поле Name укажем имя данного проекта— Summa, при этом снимем флажок Create directory for Solution. После щелчка по кнопке ОК управляющая среда создаст папку Summa, в которой будет находиться проект нового Web-приложения.
Теперь мы можем приступить к проектированию Web-страницы. Поскольку проект пустой (empty), добавим к текущему проекту Web-форму. Для этого в пункте меню Project выберем команду Add New Item, в появившемся окне укажем шаблон Web Form и щелкнем на кнопке Add. При этом в окне Solution Explorer будет добавлен значок WebForm1.aspx. Теперь мы можем проектировать внешний вид формы на вкладке WebForm1.aspx. Внизу вкладки увидим переключатели Design, Source и Split, которые позволяют изменить взгляд на форму, соответственно, в виде визуального проекта (Design), в виде HTML- и ASP-разметки (Source), а также одновременно обе эти возможности (Split).
Принцип перетаскивания из панели элементов Toolbox нужных для текущего проекта элементов управления точно такой же, как и при проектировании формы Windows. Поэтому перетащим из панели элементов управления раздела Standard необходимые нам два текстовых поля, командную кнопку и метку. Кроме того, в заголовке Web-страницы предусмотрим текст "Введите два числа". Для этого щелкнем правой кнопкой мыши в пределах проектируемой Web-страницы, в контектном меню выберем пункт Properties. В появившемся окне свойств Properties среди свойств документа (DOCUMENT) найдем свойство Title, которое содержит текст заголовка Web-страницы. Этому свойству присвоим значение "Введите два числа".
Уже на этом этапе посмотрим на внешний вид проекта, для этого попытаемся выполнить этот проект— нажмем клавишу <F5>. В результате Internet Explorer откроет файл WebForm1.aspx, сгенерированный управляющей средой, и мы получим Web-страницу, изображенную на рис. 13.2.
Понятно, что пока эта страница является статической. Закроем Web-браузер и вернемся к проекту Web-страницы. По умолчанию проектируемая Web-страница имеет имя WebForm1.aspx, но при желании в окне Sulution Explorer (Обозреватель решений), щелкнув правой кнопкой мыши на значке WebForm1.aspx, это имя можно изменить. Вообще говоря, интерактивность, динамичность Web-странццы обеспечивает aspx.cs-файл программной поддержки, содержащей код на VisualС#2010. Чтобы перейти на вкладку файла программного кода WebForm1.aspx.cs, следует, например, воспользоваться контекстным меню проекта Web-формы и выдать команду View Code. Как видите, вкладка программного кода здесь такая же, как и при проектировании формы Windows. На вкладке файла WebForml.aspx.cs запишем следующий программный код (листинг 13.2).
Листинг 13.2. Создание простейшей активной Web-страницы
// Создание простейшей активной Web-страницы на Visual С# 2010. Web-страница демонстрирует способность
// складывать числа, введенные пользователем
using System;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace Summa
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ // Обработка события "загрузка страницы"
Page.Title = "Введите два числа";
Label1.Text = string.Empty;
Button1.Text = "Найти сумму двух чисел";
}
protected void Button1_Click(object sender, tvencArgs e)
{ // Обработка события "щелчок на кнопке"
double Z = convert.ToDouble(TextBox1.Text) + Convert.ToDouble(TextBox2.Text);
Label1.Text = "Сумма = " + Z;
}
}
}
Как видно из текста программы, при обработке события загрузки страницы Page_Load очищаем (string.Empty) текстовую метку и задаем текст на командной кнопке. Обратите внимание, что по умолчанию названия элементов управления (например, Button1) система генерирует с прописной буквы. При обработке события "щелчок на кнопке", используя функцию ToDouble класса Convert, преобразуем символы, введенные пользователем (клиентом) в переменные типа double, складываем их и выводим сумму в текстовую метку. Готовая Web-форма будет иметь вид. представленный на рис. 13.3.
В результате работы управляющей среды была скомпилирована библиотека Summa.dll в папке bin. Теперь именно Summa.dll будет обеспечивать интерактивность файлу разметки WebForm1.aspx.
Таким образом, созданная Web-страница представляет собой два файла: WebForm1.aspx и WebForml.aspx.cs. Файл WebForm1.aspx определяет HTML-содержимое сайта, a WebForm1.aspx.cs — программный код, который отделен от HTML-содержимого и предназначен для программного формирования данного содержимого или выполнения каких-либо иных действий на сервере. Эта связь определена в файле WebForm1.aspx в директиве Page через свойство СоdeBehind="WebForm1.aspx.cs".
Рис. 13.3. Сумма двух введенных чисел
Убедиться в работоспособности Web-страницы можно, открыв решение Summa.sln в папке Summa.
Пример 92. Проверка введенных пользователем числовых данных с помощью валидаторов
Очевидно, что созданная в предыдущем разделе Web-страница имеет много недостатков, в частности если пользователь не заполнил текстовые поля, то получим ообщение "Ошибка сервера...". Между тем следовало бы подсказать пользователю, что надо ввести что-либо в указанные поля. Кроме контроля пустых полей необходимо проверить, является ли введенное значение числом или символом (например, буквой). Для этих целей при разработке Windows-приложений мы использовали функцию TryParse, однако при разработке Web-приложений имеем реди элементов управления так называемые валидаторы, которые можно использовать в документах ASP.NET для осуществления любой проверки введенных данных. Валидаторы (их шесть) можно увидеть в разделе Validation в панели элементов Toolbox.
В данной задаче мы будем совершенствовать Web-страницу, созданную нами в предыдущем примере. Выполним проверку, ввел ли пользователь хоть что-либо в текстовые поля, а также проверим тип введенных данных и выясним, соответствуют ли они типу данных Double.
Для этого запустим Visual Studio 2010, в окне New Project выберем среди шаблонов Visual С# Web шаблон Empty ASP.NET Web Application, в поле Name укажем имя нового решения — Valid 1 и щелкнем на кнопке ОК. Теперь добавим к текущему проекту Web-форму. Для этого в пункте меню Project выберем команду Аdd New Item, в появившемся окне укажем шаблон Web Form и щелкнем на нопке Add. Далее на вкладке конструктора формы перетащим из раздела Standard панели элементов Toolbox необходимые нам два текстовых поля, командную кнопку и метку.
Рис. 13.4. Проектирование Web-формы программы, содержащей валидаторы
В данной задаче мы должны контролировать два текстовых поля, поэтому перенесем мышью из раздела Validation панели Toolbox соответственно два валидатора RequiredFieldValidator, проверяющих факт заполнения текстовых полей, и два валидатора CompareValidator для проверки, ввел пользователь числа или другие символы. Расположим их в форме, как показано на рис. 13.4. Далее на вкладке файла программной поддержки WebForm1.aspx.cs усовершенствуем программный код так, как представлено в листинге 13.3.
Листинг 13.3. Использование валидаторов на Web-странице
// Проверка введенных пользователем числовых данных с помощью валидаторов. Выполним проверку, ввел ли //пользователь хоть что-либо в текстовые поля, а также проверим тип введенных данных и выясним,
// соответствуют ли они типу данных Double,
using System;
using System.Web.UI.WebControls;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace Valid1
{
public partial class WebForm1: System.Web.UI. Page
{
protected void Page_Load(object sender, EventArgs e)
{ // Обработка события "загрузка страницы"
Page.Title = "Введите два числа";
Label1.Text = string.Empty; Label1.Width = 180;
Button1.Text = "Найти сумму двух чисел";
Button1.Width = 180; TextBox1.Focus();
TextBox1.Width = 180; TextBox2.Width = 180;
// Установки валидаторов.
// Контролируем факт заполнения текстовых полей:
RequiredFieldValidator1.ErrorMessage ="* Следует заполнить это текстовое поле";
RequiredFieldValidator1.ControlToValidate = "TextBoxl";
RequiredFieldValidator2.ErrorMessage = "* Следует заполнить это текстовое поле"; RequiredFieldValidator2.ControlToValidate = "TextBox2";
// Проверяем, соответствуют ли данные, введенные в текстовые поля,
// типу Double:
CompareValidator1.ControlToValidate = "TextBoxl";
CompareValidator1.Type = ValidationDataType.Double;
CompareValidator1.Operator = ValidationCompareOperator.DataTypeCheck;
CompareValidatorl1. ErrorMessage = "* Следует вводить числа";
CompareValidator2.ControlToValidate = "TextBox2";
CompareValidator2.Type = ValidationDataType.Double;
CompareValidator2.Operator = ValidationCompareOperator.DataTypeCheck; CompareValidator2.ErrorMessage = "* Следует вводить числа";
}
protected void Button1_Click(object sender, EventArgs e)
{ // Обработка события "щелчок на кнопке"
double Z = Convert.ToDouble(TextBoxl.Text) + Convert.ToDouble(TextBox2.Text);
Label1.Text = "Сумма = " + Z;
}
}
}
Как видно, при загрузке страницы в свойствах валидаторов RequiredField мы указали имена полей, подлежащих контролю факта их заполнения, а также привели текст сообщения, как реакцию на данную ошибку. В свойствах валидаторов Comраге также указали имена полей, подлежащих проверке типа данных DataTypeCheck и текст сообщения.
Пример работы запрограммированных валидаторов приведен на рис. 13.5.
Рис. 13.5. Фрагмент работы Web-страницы с валидаторами
Среди имеющихся на панели Toolbox валидаторов уместно отметить ValidationSummary. Его можно поместить куда-нибудь на Web-страницу, где будут отображаться все сведения об ошибках от разных валидаторов. Причем чтобы сообщения не дублировались, можно указать в свойствах всех валидаторов Visible =faIse, но только свойства валидатора ValidationSummary.Visible = true.
Очень ценно то, что валидаторы обеспечивают проверку данных не на сервере, на машине клиента. Это происходит следующим образом: браузер клиента запрашивает на Web-сервере соответствующую страницу; в ответ сервер отсылает на клиентский компьютер HTML-код, который содержит JavaScript с диагностикой, которую мы предусмотрели в cs-файле поддержки. В результате пользователь (клиент) не ощущает задержки во время диагностики данных, поскольку диагностика происходит на клиентском компьютере. Следует отметить то, что если бы мы сами писали валидаторы на языке JavaScript, то потребовалось бы написать гораздо больше строк программного кода.
Убедиться в работоспособности Web-страницы можно, открыв решение Valid1.sin в папке Valid1.
Пример 93. Проверка достоверности ввода имени, адреса e-mail, URL-адреса и пароля с помощью валидаторов
В данном примере рассмотрим типичную задачу проверки ввода пользователем имени, адреса e-mail, URL-адреса и пароля, например при регистрации пользователя. Причем если страница (Web-форма) успешно прошла все этапы проверки, то направляем пользователя на другую, уже разрешенную для этого пользователя, Web-страницу.
Решая поставленную в данном разделе задачу, запустим Visual Studio 2010, закажем новый проект из шаблона Empty ASP.NET Web Application, укажем в поле Name имя