Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Благодарности 10 страница






Диалоговое окно регистрации программы

Многие разработчики программ, особенно условно-бесплатных, предлагают пользователям зарегистрировать копию программы. Как правило, для этого пользователь должен заполнить регистрационную форму и отправить ее содержимое по электронной почте. В ответ пользователь обычно получает ключ регистрации, позволяющий использовать все возможности программы, бесплатное сопровождение и пр.

В нашей программе SimpleNotepad мы тоже предусмотрим форму регистрации, однако ее назначение ограничивается демонстрацией приемов ввода и обработки информации в диалоговых окон. Никакого сопровождения программы SimpleNotepad мы обеспечить не можем!

Создание формы регистрации

Добавьте в проект форму Регистрация программы, создав для нее файл RegisterForm.cs. Процедура добавления в проект новых форм уже была описана ранее (например, в разделе «Замена окну MassageBox» этой главы), поэтому мы не будем о ней подробно рассказывать.

Внешний вид формы, которая должна у Вас получиться, показан на рис. 5-5.

Рис. 5-5. Диалоговое окно регистрации программы

Вам нужно будет добавить ряд элементов управления из инструментальной панели Toolbox системы разработки приложений Microsoft Visual Studio.NET. Ниже мы расскажем о том, какие элементы управления требуется добавить, и как настроить их свойства. Затем мы займемся подготовкой обработчиков сообщений.

Поля ввода текстовой информации

Всего в форме Регистрация программы мы предусмотрели четыре поля ввода текстовой информации. Это поля Ф.И.О., Адрес E-Mail, Оставьте Ваш комментарий, а также поле ввода названия любимой ОС.

Добавив в форму указанные поля, измените их идентификаторы, хранящиеся в свойстве Name, в соответствии с табл. 5-7.

Таблица 5-7. Идентификаторы полей ввода текстовой информации

Поле Идентификатор
Ф.И.О. textBoxName
Адрес E-Mail textBoxEmail
Оставьте Ваш комментарий textBoxComment
Поле ввода названия любимой ОС textBoxFavoriteOS

 

Кроме этого, во всех этих полях сотрите тестовые строки, задающие значение свойства Text и снабдите их поясняющими надписями, как это показано на рис. 5-5.

Так как поле Оставьте Ваш комментарий предназначено для ввода многострочного комментария, установите значение свойства Multiline равным true. После этого Вы сможете отрегулировать не только ширину, но и высоту этого поля.

Далее, установите значение свойства Enabled поля ввода названия любимой ОС textBoxFavoriteOS, равным false. В этом случае сразу после отображения формы данное поле будет заблокировано. Разблокировка поля будет осуществляться обработчиком событий от флажка Другая (укажите, какая), т.к. это поле нужно только в том случае, если пользователь отметил этот флажок.

Флажки с зависимой фиксацией

Форма регистрации содержит две группы флажков с независимой фиксацией. Группа флажков Пол позволяет указать пол владельца копии программы, а группа флажков Любимая ОС — название любимой операционной системы владельца.

Заметим, что вторая группа флажков снабжена дополнительным полем ввода текстовой информации. Если пользователю не нравится ни Microsoft Windows, ни Linux, он может отметить флажок Другая (укажите, какая), а затем ввести название своей любимой ОС в этом дополнительном текстовом поле.

Как видно из названия, из флажков с зависимой фиксацией, принадлежащих одной группе, в отмеченном состоянии может находиться только один флажок. Таким образом, нельзя указать одновременно и мужской, и женский пол, а из любимых ОС можно выбрать только одну.

Для объединения флажков Муж. и Жен. в группу Пол перетащите из инструментальной панели Toolbox элемент управления GroupBox. Запишите строку «Пол» в свойство Text этого элемента управления.

Затем перетащите внутрь окна элемента управления GroupBox два флажка типа RadioButton. Это и есть флажки с зависимой фиксацией. Свое название они получили по аналогии с кнопками радиоприемника, которые можно нажимать только по одной.

Измените надпись около флажков в соответствии с рис. 5-5, отредактировав свойства флажков Text.

Аналогичным образом создайте группу флажков Любимая ОС, добавив в нее три флажка MS Windows, Linux и Другая (укажите, какая).

Добавив все флажки и расположив их внутри соответствующих окон GroupBox, проверьте их идентификаторы, хранящиеся в свойстве Name, на соответствие табл. 5-8.

Таблица 5-8. Идентификаторы флажков с зависимой фиксацией

Флажок Идентификатор
Муж. radioButton1
Жен. radioButton2
MS Windows radioButton3
Linux radioButton4
Другая (укажите, какая) radioButton5

Флажки с независимой фиксацией

Флажки с независимой фиксацией не нужно объединять в группы, т.к. они работают независимо друг от друга. Вам нужно добавить в форму регистрации два таких флажка класса CheckBox, перетащив их мышью из инструментальной панели Toolbox.

Флажок Подписка на новости должен иметь идентификатор checkBoxSendNews, а флажок Подписка на электронную газету — идентификатор checkBoxSendLetter. Таким образом, для этих флажков нужно настроить только свойства Name (идентификатор) и Text (текст, расположенный около флажка).

Список ComboBox

Для выбора одного значения из нескольких возможных удобен элемент управления ComboBox. Мы применили его для выбора квалификации пользователя из списка Квалификация.

Перетащив элемент управления ComboBox в окно нашей формы, снабдите его надписью Квалификация, как это показано на рис. 5-5.

Далее необходимо заполнить список текстовыми строками, отредактировав свойство Items. Для этого будет запущен редактор набора строк String Collection Editor (рис. 5-6).

Рис. 5-6. Редактор набора строк

Введите в окне этого редактора текстовые строки названий для различных уровней квалификации пользователя.

Чтобы по умолчанию в списке Квалификация была выбрана строка Начальная, запишите эту строку в свойство Text элемента управления ComboBox.

Добавление календаря

На панели Toolbox имеется очень удобный элемент управления MonthCalendar — календарь, предназначенный для ввода дат и диапазонов дат. Перетащите этот календарь на поверхность разрабатываемой формы и снабдите его надписью День Вашего рождения, как это показано на рис. 5-5.

Вам нужно настроить только одно свойство календаря MaxSelectionCount, определяющее максимальный диапазон дат, который может выбрать пользователь. В нашем случае нужно выбрать только один день, поэтому установите значение этого свойства, равное 1.

Кнопки для закрытия формы

Вам нужно добавить в форму Регистрация программы две кнопки с надписями Зарегистрировать и Отменить. Первая из них предназначена для отправки по электронной почте регистрационных данных, введенных пользователем, а вторая отменяет регистрацию.

Кнопка Зарегистрировать должна иметь идентификатор button1, а кнопка Отменить — идентификатор button2.

Запишите в свойство DialogResult кнопки Регистрация программы значение Yes, а в свойство DialogResult кнопки Отменить — значение Cancel.

В результате при закрытии формы кнопкой Регистрация программы вызывающий метод получит от метода ShowDialog значение DialogResult.Yes, а при закрытии формы кнопкой Отменить — значение DialogResult.Cancel.

Настройка свойств формы

При редактировании свойств формы Вам нужно изменить ее название, хранящееся в свойстве Text, а также назначить кнопки клавишам Esc и Enter.

Когда пользователь нажимает на клавиатуре клавишу Esc, процедура регистрации должна быть отменена, как при щелчке кнопки Отменить. Поэтому свойству формы CancelButton необходимо присвоить идентификатор кнопки Отменить (button2).

Что же касается клавиши Enter, то ее нужно связать с клавишей Зарегистрировать. Это позволит завершить вод данных регистрации естественным образом — нажатием клавиши Enter. Чтобы обеспечить такую функциональность, присвойте свойству AcceptButton нашей формы значение идентификатора кнопки Зарегистрировать (button1).

Программирование формы регистрации

Теперь, когда Вы подготовили форму регистрации и настроили свойства расположенных в ней элементов управления, можно приступить к программированию формы. Здесь нам нужно решить две задачи: создать обработчики событий нашей формы, и обеспечить передачу регистрационной информации, введенной пользователем, в вызывающую программу.

Обработка событий

Благодаря тому, что мы настроили свойство DialogResult кнопок Зарегистрировать и Отменить, присвоив им значения DialogResult.Yes и DialogResult.Cancel соответственно, нам не нужно обрабатывать события, создаваемые этими кнопками.

Когда пользователь щелкнет одну из этих кнопок, соответствующее значение будет автоматически присвоено свойству DialogResult нашей формы. В результате форма будет закрыта, а значение, соответствующее щелкнутой кнопке, будет передано вызывающей программе.

Тем не менее, один обработчик событий нам все же придется создать. Речь идет об обработчике событий для флажка Другая (укажите, какая), входящего в группу флажков Любимая ОС.

Когда пользователь отмечает этот флажок, программа должна разблокировать поле ввода текста textBoxFavoriteOS, для того чтобы позволить ему ввести название любимой ОС. Аналогично, когда пользователь снимает отметку с данного флажка, программа должна вновь заблокировать поле textBoxFavoriteOS.

Чтобы создать необходимый обработчик событий, дважды щелкните левой мышью флажок Другая (укажите, какая). Затем подготовьте исходный текст созданного обработчика событий radioButton5_CheckedChanged в следующем виде:

private void radioButton5_CheckedChanged(object sender,
System.EventArgs e)
{
RadioButton rb = (RadioButton)sender;

if(rb.Checked)
textBoxFavoriteOS.Enabled = true;
else
textBoxFavoriteOS.Enabled = false;
}

Получив управление, этот обработчик событий сохраняет ссылку на флажок, создавший событие, в переменной rb. Далее программа проверяет значение, хранящееся в свойстве rb.Checked.

Если это значение равно true, флажок отмечен. В этом случае обработчик событий снимает блокировку с поля textBoxFavoriteOS, записывая в свойство textBoxFavoriteOS.Enabled значение true.

В том случае, когда значение свойства rb.Checked равно false, событие было вызвано тем, что пользователь снял отметку с нашего флажка. В этом случае программа вновь блокирует поле textBoxFavoriteOS, записывая в свойство textBoxFavoriteOS.Enabled значение false.

Передача регистрационной информации

Для того чтобы вызывающая программа смогла получить регистрационную информацию, введенную пользователем в форме регистрации, нам надо будет модифицировать класс RegisterForm, добавив в него несколько свойств.

Добавление свойств

Вы можете добавить свойства вручную, отредактировав исходный текст файла RegisterForm.cs, однако Microsoft Visual Studio.NET может оказать Вам в этом некоторую помощь.

Откройте вкладку Class View, расположенную в правом верхнем углу этой системы разработки приложений (рис. 5-7).

Рис. 5-7. Добавление нового свойства

На этой вкладке раскройте папку проекта SimpleNotepad. В ней Вы увидите папки классов — HelpAboutForm, RegisterForm, SaveDocumentNeededForm и SimpleNotepadForm. Каждая такая папка создается для класса, реализующего ту или иную форму нашего приложения.

Раскройте папку RegisterForm. В ней находятся методы, свойства, поля, интерфейсы и другие объекты класса. Чтобы создать новый метод, щелкните правой клавишей мыши строку названия класса RegisterForm, а затем выберите из контекстного меню Add строку Add Property, как это показано на рис. 5-7.

В результате на экране появится окно мастера свойств (рис. 5-8).

Рис. 5-8. Указание параметров свойства

Выберите в поле Property access тип доступа public, тип свойства Property type — string, а имя свойства Property name укажите как UserName. Это свойство будет использовано нами для получения имени пользователя, введенного в форме регистрации.

Далее, отметьте флажок get, чтобы создать один функцию доступа get для чтения значения свойства. Наша программа не будет записывать в это свойство никаких значений, поэтому функция доступа set не нужна.

Свойства для текстовых полей

В результате выполнения описанных выше действий мастер свойств создаст в файле RegisterForm.cs пустое тело свойства UserName. Отредактируйте его следующим образом:

public string UserName
{
get
{
return textBoxName.Text;
}
}

Обращаясь к свойству UserName, вызывающая программа получит текст, введенный пользователем в поле textBoxName.

Подготовьте аналогичным образом свойства UserEmail, UserLevel и UserComment:

public string UserEmail
{
get
{
return textBoxEmail.Text;
}
}

public string UserLevel
{
get
{
return comboBoxLevel.Text;
}
}

public string UserComment
{
get
{
return textBoxComment.Text;
}
}

Все эти свойства выглядят одинаково, т.к. выполняют схожую функцию — получают и возвращают текст, введенный (или выбранный) пользователем в соответствующем элементе управления.

Свойства для флажков с зависимой фиксацией

Что же касается флажков, с помощью которых пользователь указывает свой пол, а также любимую ОС, то для них нужно подготовить свойства по-другому.

Вот свойство, позволяющее вызывающей программе определить состояние флажков группы Пол:

public string UserGender
{
get
{
for(int i=0; i < groupBoxGender.Controls.Count; i++)
{
RadioButton rb = (RadioButton)groupBoxGender.Controls[i];
if(rb.Checked)
return rb.Text;
}
return " ";
}
}

Здесь мы в цикле перебираем все элементы управления, расположенные внутри блока groupBoxGender. Количество таких элементов хранится в свойстве groupBoxGender.Controls.Count.

Для каждого элемента мы получаем ссылку и сохраняем ее в переменной rb класса RadioButton. Так как в группе groupBoxGender имеются только флажки класса RadioButton, выполняемое при этом преобразование типов не вызывает никаких проблем.

Далее программный код свойства UserGender проверяет состояние очередного флажка. Если флажок отмечен, то в свойстве rb.Checked хранится значение true. В этом случае функция доступа нашего свойства возвращает текст флажка, хранящийся в свойстве rb.Text. Иначе программа переходит к проверке следующего флажка.

Ситуация, когда ни один из флажков не отмечен, возможна, только если форма была подготовлена неправильно. В этом случае функция доступа get возвращает пустую строку.

Что же касается группы флажков groupBoxOS, то в ней помимо собственно флажков имеется текстовое поле textBoxFavoriteOS. Напомним, что если пользователь не любит ни Microsoft Windows, ни Linux, то он может ввести в этом поле название своей любимой ОС.

В процессе циклического перебора функция доступа обязательно столкнется с текстовым полем textBoxFavoriteOS, и не сможет привести ссылку на него к типу RadioButton. Для того чтобы исключить появление ошибки во время выполнения программы, мы проверяем тип каждого элемента управления при помощи ключевого слова is:

public string FavoriteOS
{
get
{
for(int i=0; i < groupBoxOS.Controls.Count; i++)
{
if(groupBoxOS.Controls[i] is RadioButton)
{
RadioButton rb = (RadioButton)groupBoxOS.Controls[i];

if(rb.Checked)
{
if(rb.Name! = radioButton5.Name)
return rb.Text;
else
return textBoxFavoriteOS.Text;
}
}
}
return " ";
}
}

Преобразование типа выполняется только для флажков, а текстовое поле пропускается.

В том случае, если функция доступа обнаружила отмеченный флажок, она проверяет его идентификатор. В том случае, если пользователь отметил флажок Другая (укажите, какая), функция доступа читает свойство textBoxFavoriteOS.Text, а не свойство Text отмеченной кнопки. В результате функция доступа вернет в этом случае название ОС, введенное пользователем в текстовом поле.

Заметим, что использованную здесь проверку типов следует применить и в свойстве UserGender, исходный текст которого был рассмотрен ранее. Это позволит избежать ошибок в том случае, если Вы решите добавить в группу groupBoxGender элементы, отличные от флажков RadioButton.

Свойства для флажков с независимой фиксацией

Свойства, предназначенные для передачи в вызывающую программу состояния флажков с независимой фиксацией, выглядят достаточно просто:

public string SendNews
{
get
{
if(checkBoxSendNews.Checked)
return " Yes";
else
return " No";
}
}

public string SendLetter
{
get
{
if(checkBoxSendLetter.Checked)
return " Yes";
else
return " No";
}
}

Соответствующие функции доступа определяют, отмечены флажки или нет, проверяя свойства checkBoxSendNews.Checked и checkBoxSendLetter.Checked. В зависимости от этого они возвращают ту или иную текстовую строку.

Свойство для календаря

Свойство UserBirthDay, созданное нами для получения даты рождения, введенной пользователем с помощью календаря, выглядит следующим образом:

public string UserBirthDay
{
get
{
DateTime dt = monthCalendar1.SelectionStart;
return dt.Day + "." + dt.Month + "." + dt.Year;
}
}

Здесь мы вначале получаем из свойства monthCalendar1.SelectionStart дату, выделенную пользователем, и сохраняем эту дату в переменной dt типа DateTime. Далее из отдельных компонентов даты (календарного числа dt.Day, номера месяца dt.Month и года dt.Year) формируется текстовая строка. Эта строка и возвращается функцией доступа get.

Отображение формы регистрации

Для отображения формы регистрации добавьте в меню Help приложения SimpleNotepad строку Register. Затем создайте для этой строки следующий обработчик события menuHelpRegister_Click:

private void menuHelpRegister_Click(object sender,
System.EventArgs e)
{
RegisterForm dialog = new RegisterForm();
if(DialogResult.Yes == dialog.ShowDialog())
{
string body = " Данные регистрации: ";

body += " Name: " + dialog.UserName;
body += ", Email: " + dialog.UserEmail;
body += ", Level: " + dialog.UserLevel;
body += ", Gender: " + dialog.UserGender;
body += ", FavoriteOS: " + dialog.FavoriteOS;
body += ", SendNews: " + dialog.SendNews;
body += ", SendLetter: " + dialog.SendLetter;
body += ", BirthDay: " + dialog.UserBirthDay;
body += ", Comment: " + dialog.UserComment;

System.Diagnostics.Process.Start(
" mailto: alexandre@frolov.pp.ru? subject=Регистрация& body=" +
body);
}
}

Вначале этот обработчик создает форму регистрации как объект класса RegisterForm и сохраняет ее идентификатор в переменной dialog. Далее форма отображается на экране методом dialog.ShowDialog. На рис. 5-9 эта форма показана в заполненном виде.

Рис. 5-9. Поля окна регистрации заполнены (все приведенные здесь данные вымышлены)

Если пользователь щелкнул кнопку Зарегистрировать, метод dialog.ShowDialog возвращает значение DialogResult.Yes. В этом случае обработчик события menuHelpRegister_Click формирует текстовую строку body, записывая в нее значения, извлеченные из свойств формы.

Далее обработчик события запускает почтовую программу, установленную на компьютере пользователя, вызывая для этого метод System.Diagnostics.Process.Start:

System.Diagnostics.Process.Start(
" mailto: alexandre@frolov.pp.ru? subject=Регистрация& body=" + body);

В качестве параметра этому методу передается адрес электронной почты, а также содержимое поля subject и тело сообщения. В результате на экране появится окно редактора нового сообщения E-Mail, которое уже будет полностью подготовлено (рис. 5-10).

Рис. 5-10. Письмо с данными регистрации готово к отправке

Для отправки сообщения пользователю останется только щелкнуть кнопку Отправить, расположенную в этом окне.

Немодальные диалоговые окна

Немодальные диалоговые окна «живут» и работают одновременно с породившим их главным окном приложения. Таки окна часто используются для «плавающих» инструментальных панелей, вроде панелей известного графического редактора Adobe Photoshop. Эти окна могут применяться и для настройки различных параметров приложения, причем отсутствие модальности позволяет использовать в приложении измененные параметры, не закрывая окно настройки этих параметров.

Обычно немодальные окна связаны родственными отношениями с создавшими их окнами. При этом если пользователь минимизирует или закрывает родительское окно, дочерние немодальные окна также минимизируются или закрываются.

Немодальные окна, как и модальные, создаются на базе классов, произведенных от класса System.Windows.Form. Однако для их отображения применяется не метод ShowDialog, а метод Show. Кроме того, свойства формы немодального диалогового окна настраиваются иначе, чем свойства формы модального окна.

Приложение PropertyApp

Для демонстрации приемов работы с немодальными окнами мы подготовили приложение PropertyApp, главное окно которого показано на рис. 5-11.

Рис. 5-11. Главное окно приложения PropertyApp

В этом окне располагаются два поля ввода текстовой информации, предназначенных для ввода адресов серверов электронной почты POP3 и SMTP (первый из них предназначен для приема сообщений электронной почты, а второй — для передачи).

Пользователь имеет возможность ввести эти адреса непосредственно в полях Адрес сервера POP3 и Адрес сервера SMTP, расположенных в главном окне приложения. Но есть и еще одна возможность — пользователь может щелкнуть кнопку Настроить, и затем ввести адреса серверов в появившемся на экране немодальном окне Настройка свойств, показанном на рис. 5-12.

Рис. 5-12. Немодальное окно для ввода адресов почтовых серверов

Наше окно Настройка свойств обладает одним интересным свойством — оно создает события и передает их в главное окно приложения. Событие создается, когда пользователь щелкает кнопку Изменить (рис. 5-12). Обработчик данного события, предусмотренный в классе главного окна приложения, переписывает информацию из полей окна Настройка свойств в соответствующие поля главного окна приложения Серверы электронной почты.

Если пользователь вначале ввел адреса серверов в главном окне приложения, а потом щелкнул расположенную там кнопку Настроить, то эти введенные адреса будут использованы для инициализации полей немодального окна Настройка свойств. Таким образом, с помощью окна Настройка свойств можно отредактировать значения, введенные в главном окне, и сразу же увидеть результат редактирования.

Форма главного окна приложения PropertyApp

Создавая форму главного окна приложения (рис. 5-11), добавьте в нее два поля ввода текста и две кнопки. Поле, обозначенное как Адрес сервера POP3, должно иметь идентификатор Name, равный textBoxPOP3, а поле Адрес сервера SMTP — идентификатор textBoxSMTP.

Для кнопки Закрыть подготовьте обработчик события button2_Click:

private void button2_Click(object sender, System.EventArgs e)
{
this.Close();
}

Когда пользователь щелкает эту кнопку, главное окно приложения исчезает с экрана.

Вторая кнопка Настроить предназначена для отображения на экране немодального окна Настройка свойств, показанного на рис. 5-12. Вам следует создать для этой кнопки обработчик событий button1_Click в следующем виде:

private void button1_Click(object sender, System.EventArgs e)
{
PropertyForm dialog = new PropertyForm();
dialog.Owner = this;

dialog.SMTP = this.textBoxSMTP.Text;
dialog.POP3 = this.textBoxPOP3.Text;

dialog.ApplyHandler += new EventHandler(PropertyForm_Apply);

dialog.Show();
}

Здесь мы вначале создаем немодальное окно как объект класса PropertyForm, сохраняя ссылку на него в переменной dialog. Далее мы настраиваем свойство Owner, записывая в него ссылку на главное окно приложения:

dialog.Owner = this;

В результате создаются родительские отношения между главным окном приложения и дочерним немодальным окном.

На следующем этапе обработчик событий button1_Click переписывает текст из полей ввода адресов почтовых серверов в свойства dialog.SMTP и dialog.POP3 немодального диалогового окна:

dialog.SMTP = this.textBoxSMTP.Text;
dialog.POP3 = this.textBoxPOP3.Text;

Чуть позже мы создадим это окно и определим все его компоненты.

Следующая строка подключает обработчик события PropertyForm_Apply, создаваемого дочерним немодальным окном:

dialog.ApplyHandler += new EventHandler(PropertyForm_Apply);

Подключив обработчик событий, программа отображает дочернее окно на экране методом Show:

dialog.Show();

Обработчик событий PropertyForm_Apply нужно определить в классе формы главного окна следующим образом:

private void PropertyForm_Apply(object sender, System.EventArgs e)
{
PropertyForm dialog = (PropertyForm)sender;
this.textBoxPOP3.Text = dialog.POP3;
this.textBoxSMTP.Text = dialog.SMTP;
}

Задача обработчика событий PropertyForm_Apply сводится к переписыванию адресов почтовых серверов из свойств dialog.POP3 и dialog.SMTP дочернего окна в поля редактирования главного окна. Т.е. этот обработчик предназначен для отображения в главном окне нашей программы информации, введенной пользователем в дочернем немодальном окне.

Немодальная форма настройки свойств

Теперь мы займемся формой для немодального окна. Создайте эту форму с именем PropertyForm, создав класс с именем PropertyForm.

Расположите в форме текстовые поля ввода адресов почтовых серверов и две кнопки, показанные на рис. 5-12. Идентификаторы текстовых полей ввода Адрес сервера POP3 и Адрес сервера SMTP должны быть, соответственно, textBoxPOP3 и textBoxSMTP.

Кнопка Отменить, предназначенная для закрытия немодального диалогового окна, должна иметь идентификатор buttonCancel, а кнопка Изменить, создающая событие, — идентификатор buttonApply.

Подготовив форму, отредактируйте исходный текст класса PropertyForm.

Прежде всего, добавьте ссылку ApplyHandler на событие, реализованное в виде делегата EventHandler:

/// < summary>
/// Обработчик события от кнопки Изменить
/// < /summary>
public event EventHandler ApplyHandler;

Далее подготовьте исходный текст обработчика события buttonApply_Click, создаваемого кнопкой Изменить:

private void buttonApply_Click(object sender, System.EventArgs e)
{
if(ApplyHandler! = null)
ApplyHandler(this, new EventArgs());
}

Анализируя содержимое поля ApplyHandler, этот метод проверяет, был ли определен соответствующий обработчик события в вызывающей программе. Если был, то метод buttonApply_Click вызывает его. В качестве первого параметра обработчику при этом передается ссылка на дочернее окно, а в качестве второго — ссылка на новый объект EventArgs, позволяющий задать параметры события.

Для кнопки Отменить подготовьте обработчик события buttonCancel_Click, закрывающий окно дочерней немодальной формы:

private void buttonCancel_Click(object sender, System.EventArgs e)
{
this.Close();
}

Теперь Вам нужно определить два свойства с именами SMTP и POP3:

public string SMTP
{
get
{
return textBoxSMTP.Text;
}
set
{
textBoxSMTP.Text = value;
}
}

public string POP3
{
get
{
return textBoxPOP3.Text;
}
set
{
textBoxPOP3.Text = value;
}
}

Первое из них предназначено для хранения и передачи в вызывающую форму адреса почтового сервера SMTP, а второе — сервера SMTP. Так как вызывающая программа выполняет чтение и запись этих свойств, мы предусмотрели обе функции доступа get и set.

Функция доступа get просто возвращает содержимое соответствующего поля редактирования текста через свойство Text, а функция set — изменяет содержимое этого поля, устанавливая новое значение свойства Text.

Как все это работает?

Когда форма главного окна приложения создает форму дочернего окна, она передает ей через только что упомянутые свойства информацию, введенную пользователем в полях главного окна.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.