Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 208

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 202 203 204 205 206 207 < 208 > 209 210 211 212 213 214 .. 320 >> Следующая

Конечно же, данные из диалогового окна передаются при помощи переменных. В нашем примере мы выводили текст, введенный пользователем, на родительской форме диалогового окна. Мы слегка изменим наше приложение, добавив в него дополнительные переменные для хранения данных, вводимых пользователем:
public class SomeCustomForm : System.Windows. Foms. Font I
public SomeCustomFormO I
Initial іггСстФОпгпт.;};
Создание пользовательских диалоговых окон 515 this.StartPosition = FormStartPosition.CenterParent;
// Переменная для хранения полученных диалогового окна
private string strMessage;
publ ic string Message {
get {return strMessage: }
Il Код функции set позвогш нам настраивать исходное значение
// для текстового поля в диалоговом окне set
(
strMessage - value;
txtMessage.Text - str.Message:
}
1
І"
Для передачи значения из текстового поля в диалоговом окне нам придется также позаботиться о перехвате события Cl і Ck кнопки ОК. Помните, что назначение кнопке значения Di а 1 ogResu 11 .OK означает, что при нажатии на эту кнопку диалоговое окно будет закрыто. Однако в нашем случае в обработчике события Cl і ck нам потребуется выполнить дополнительные действия:
protected void btnOK_Click (object sender. System.EventArgs e) {
Il Кнопка OK нажата! Настраиваем новые сообщения strMessage - txtMessage.Text:
}
Собственно говоря, мы сделали почти все. Конечно же, в нашем приложении диалоговое окно может использоваться для ввода пользователем значительно большего количества данных. В этом случае нам потребуются дополнительные свойства для сохранения информации о данных, введенных или выбранных пользователем в диалоговом окне, но принцип остается тем же самым. В нашем примере осталось только предусмотреть код для извлечения значения из диалогового окна и применения этого значения в приложении. Этот код может выглядеть следующим образом:
protected void nnuModalBox_Click (object sender, System.EventArgs e)
{
Il Создаем диалоговое окно
SomeCuStomForm myForm = new SomeCuStomForm():
Il Будем считать что у нас уже есть переменная типа string, которая называется // dlgMsg
my Form.ShowDialog(this); myForm.Message - dlgMsg:
iftwyFortn.uiaiogResuK = = OialosRssult.OK; {
dlgMsg = myForm.Message: InvalidateO:
)
516 Глава 10 * Элементы управления
DoSomeWork():
}
Теперь мы можем делать с полученным значением все, что угодно. Например, вывести его стандартным способом в клиентской части формы: protected void ma1nFcrtn_?Eint (object, sender. PaintEventArgs e) {
// Выводим текстовую строку, полученную из диалогового окна Graphics g - е.Graphics:
g.DrawString(dlgMsg. new FontC"times New Roman". 24). Brushes.Blue,
this.ClientRectangle):
}
Код приложения SimpIeDialog можно найти в подкаталоге Chapter 10.
Наследование форм
Последнее, о чем необходимо рассказать в этой главе, - о наследовании форм в С#. Наследование — это один из столпов ООП, который позволяет одному классу расширять возможности другого класса. Обычно когда речь идет о наследовании, мы
подразумеваем наследование одного типа без какого-либо графического интерфейса от другого такого же типа. Однако в мире Windows Forms мы вполне можем произвести один класс Form от другого класса Form, сохранив при этом и настроенные в базовом классе элементы управления, и все остальные возможности исходной формы.
Проиллюстрируем это на примере. Предположим, что мы поместили класс CarConfl gForm. es из наших предыдущих примеров в библиотеку кода С# (CarConfigLib) и откомпилировали соответствующий модуль DLL. После этого мы создали новый проект Windows Application. Будем считать, что наша задача — создать в этом проекте новый класс Form, производный от CarConfigFrom.cs.
Первое, что мы должны сделать - добавить ссылку на сборку CarConfigLib.dll. Следующий этап — определить отношения наследования между двумя классами стандартными средствами С#:
// Используем пространство имен базового класса using CarConfig:
// Созданная нами форма - это класс, производный от CarConfigForm
public class DerivedForm : CarConfig.CarConfigForm
{...}:
Если мы создадим экземпляр типа DerivedForni в приложении Windows Form, то
убедимся, что DerivedForm унаследовал все элементы управления от CarConfigForm! Весь необходимый для отображения унаследованных элементов управления код находится в определении метода Initial izeComponent(). Все элементы управления, которые были объявлены в базовом классе как Private, не могут быть перемещены в производном классе на другое место. Если же мы поменяем определение класса CarConfigForm таким образом, что элементы управления станут protected вместо private, то сможем изменять их местонахождение при помощи графических средств конструирования формы. Конечно же, мы можем расширять функциональность производного класса, например, путем добавления своих элементов управления.
Подведение итогов 517
Например, для наших целей мы можем добавить новое главное меню с единственным пунктом для выхода из приложения (рис. 10.32).
Т.- OeriVedform.ts [Design]
Предыдущая << 1 .. 202 203 204 205 206 207 < 208 > 209 210 211 212 213 214 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100