Выбрать главу

private EventHandler RBH; // Экземпляр делегата

// для кнопок-переключателей

private EventHandler CBH; // Экземпляр делегата

// для опций

private EventHandler TBH; // Экземпляр делегата

// для текстового поля

// Свойство для определения размера шрифта:

private int FSize{

get{

продолжение

288

Глава 8. Приложение с графическим интерфейсом: учебный проект

Листинг 8.1 (продолжение)

int size; // Локальная целочисленная переменная

try{ // Блок обработки исключительных ситуаций

// Попытка преобразовать текст текстового

// поля в число:

size=Int32.Parse(tsize.Text);

// Если маленькое число, генерируем ошибку:

if(size<min) throw new Exception();

if(size>max){ // Если слишком большое число,

// ограничиваем значение

size=max; // Значение локальной переменной

// Присваивание значения текстовому полю:

tsize.Text=size.ToString();

}

return size; // Результат аксессора - значение

// свойства

}

catch{ // Обработка исключительной ситуации

size=min; // Значение локальной переменной - по

// минимуму

tsize.Text=size.ToString(); // Заполнение текстового

// поля

return size; // Значение свойства в случае

// исключительной ситуации

}

}

}

// Свойство для определения шрифта для

// образца текста.

// Свойство является объектом класса Font:

private Font SFont{

get{

FontStyle fs=FontStyle.Regular; // Стиль шрифта. Начальное

// значение

if(CBtns[0].Checked) fs= fs|FontStyle.Bold; // Применяем

// жирный

// шрифт

if(CBtns[1].Checked) fs|=FontStyle.Italic; // Применяем

// курсивный

// шрифт

string fn=FN[0]; // Текстовое название шрифта.

// Начальное значение

// Перебор кнопок-переключателей для

// определения положения переключателя:

for(int i=1;i<RBtns.Length;i++){

if(RBtns[i].Checked) fn=FN[i]; // Изменение названия

// шрифта

Программный код и выполнение программы           289

}

// Создается объект шрифта:

Font F=new Font(fn,FSize,fs);

// Результат свойства:

return F;

}

}

/*

Метод, который используется в качестве обработчика события

выбора пункта меню, связанного с определением типа шрифта.

*/

public void setType(Object obj,EventArgs ea){

string menu; // Локальная текстовая переменная

menu=(obj as MenuItem).Text; // Текст выбранного пункта меню

// Оператор цикла для перебора

// кнопок-переключателей:

for(int i=0;i<RBtns.Length;i++){

if(menu==RBtns[i].Text){

// Если текст пункта меню совпадает

// с текстом кнопки, переключатель

// устанавливается в выделенное положение:

RBtns[i].Checked=true;

return; // Завершается работа метода

}

}

}

/*

Метод, который используется в качестве обработчика события

выбора пункта меню, связанного с определением стиля шрифта.

*/

public void setStyle(Object obj,EventArgs ea){

int index; // Локальная целочисленная переменная

index=(obj as MenuItem).Index; // Индекс выбранного пункта

// в меню

// Изменение (инверсия) статуса опции:

CBtns[index].Checked=!CBtns[index].Checked;

}

/*

Метод используется для обработки события выбора пункта меню, связанного с определением размера шрифта.

*/

public void setSize(Object obj,EventArgs ea){

string size; // Локальная текстовая переменная

size=(obj as MenuItem).Text; // Текст выбранного пункта меню

tsize.Text=size; // Присваивание нового значения

продолжение

290

Глава 8. Приложение с графическим интерфейсом: учебный проект

Листинг 8.1 (продолжение)

// текстовому полю

}

/*

Метод используется в качестве обработчика события щелчка

на кнопке,

в результате чего применяются настройки шрифта, выполненные

в окне формы.

*/

public void OKButtonClick(Object obj,EventArgs ea){

sample.Font=SFont; // Применение шрифта, определяемого

// свойством SFont

}

/*

Метод используется в качестве обработчика щелчка на кнопке, предназначенной для завершения работы приложения.

*/

public void CancelButtonClick(Object obj,EventArgs ea){

Application.Exit(); // Завершение работы программы

}

/*

Метод для создания главного меню. При вызове метода формируется

главное меню оконной формы. Ссылка на объект этого меню

возвращается в качестве

результата.

*/

private MainMenu getMyMenu(){

// Создание объекта главного меню:

MainMenu MyMenu=new MainMenu();

// Создание массива из объектов - пунктов меню:

MenuItem[] mainMI=new MenuItem[MN.Length];

// Оператор цикла для перебора пунктов меню:

for(int i=0;i<MN.Length;i++){

mainMI[i]=new MenuItem(MN[i]); // Создание объекта

// пункта меню

// Добавление пункта меню в главное меню:

MyMenu.MenuItems.Add(mainMI[i]);

}

/*

Заполнение командами каждого из пунктов главного меню.

Используется метод setMyMenuItem() для заполнения пунктов меню.

Первый аргумент метода - объект заполняемого пункта меню.

Второй аргумент метода - список текстовых значений-названий команд.