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

*/

setMyMenuItem(mainMI[0],BN); // Заполнение первого пункта меню

// Регистрация обработчиков событий для выбора

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

// команд первого пункта главного меню:

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

mainMI[0].MenuItems[i].Click+=BH[i];

}

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

setMyMenuItem(mainMI[1],FN);

// Регистрация обработчиков событий для выбора

// команд второго пункта главного меню:

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

mainMI[1].MenuItems[i].Click+=RBH;

}

// Заполнение третьего пункта меню:

setMyMenuItem(mainMI[2],FS);

// Регистрация обработчиков событий для выбора

// команд третьего пункта главного меню:

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

mainMI[2].MenuItems[i].Click+=CBH;

}

// Заполнение четвертого пункта меню:

setMyMenuItem(mainMI[3],FSz());

// Регистрация обработчиков событий для выбора

// команд четвертого пункта главного меню:

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

mainMI[3].MenuItems[i].Click+= TBH;

}

// Главное меню сформировано.

// Возвращается результат:

return MyMenu;

}

/*

Метод для формирования пункта меню. Аргументами методами передаются

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

*/

private void setMyMenuItem(MenuItem mm,string[] names){

// Массив объектов класса MenuItem для реализации

// команд пункта меню:

MenuItem[] mi=new MenuItem[names.Length];

// Заполняем пункт меню командами:

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

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

mm.MenuItems.Add(mi[i]); // Добавление элемента в меню

}

}

// Конструктор класса:

public MyForm(){

продолжение

292

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

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

// Заголовок окна формы:

Text="Работаем со шрифтами";

// Линейные размеры формы:

Height=300;

Width=400;

// Тип границ оконной формы:

FormBorderStyle=FormBorderStyle.FixedSingle;

// Шрифт для элементов оконной формы:

Font=new Font("Arial",8,FontStyle.Bold);

// Создание метки с образцом текста:

sample=new MyLabel(100,140,290,110);

// Добавление метки в окно формы:

Controls.Add(sample);

// Создание массива для объектов кнопок:

Btns=new Button[BN.Length];

// Заполнение массива:

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

Btns[i]=new Button(); // Создание объекта кнопки

Btns[i].Text=BN[i]; // Название кнопки

Btns[i].SetBounds(10,140+i*40,80,30); // Положение и размеры

// кнопки

Controls.Add(Btns[i]); // Добавление кнопки в окно формы

}

// Массив для кнопок-переключателей:

RBtns=new RadioButton[FN.Length];

// Перебираем элементы массива:

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

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

RBtns[i].Text=FN[i]; // Название кнопки-переключателя

RBtns[i].Checked=(i==0); // Состояние переключателя

// Положение и размер кнопки-переключателя:

RBtns[i].SetBounds(10,30+30*i,100,20);

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

FName.Controls.Add(RBtns[i]);

}

// Название группы переключателей:

FName.Text=MN[1];

// Положение и размер группы переключателей:

FName.SetBounds(10,10,130,120);

// Размещение группы переключателей

// в окне формы:

Controls.Add(FName);

// Текстовая метка "Размер шрифта":

Label lsize=new Label();

// Текстовое значение метки:

lsize.Text=MN[3]+" (от "+min+" до "+max+"):";

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

// Положение и размеры области метки:

lsize.SetBounds(150,20,180,20);

// Добавление текстовой метки в окно формы:

Controls.Add(lsize);

// Создание текстового поле для ввода

// размера текста:

tsize=new TextBox();

// Начальное значение в текстовом поле:

tsize.Text=min.ToString();

// Положение и размеры тестового поля:

tsize.SetBounds(340,20,50,20);

// Способ выравнивания текста в текстовом поле

// (по правому краю):

tsize.TextAlign=HorizontalAlignment.Right;

// Добавление текстового поля в окно формы:

Controls.Add(tsize);

// Массив для кнопок-опций:

CBtns=new CheckBox[FS.Length];

// Перебираем кнопки:

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

CBtns[i]=new CheckBox(); // Создание объекта опции

CBtns[i].Text="Применить стиль: "+FS[i]; // Текст опции

CBtns[i].Checked=false; // Состояние опции

CBtns[i].SetBounds(150,50+30*i,250,20); // Положение и размер

// опции

Controls.Add(CBtns[i]); // Добавление опции в окно формы

}

/*

Блок с регистрацией обработчиков событий

и сопутствующими командами.

*/

// Массив экземпляров делегатов:

BH=new EventHandler[BN.Length];

BH[0]=OKButtonClick; // Экземпляр делегата для первой

// кнопки

BH[1]=CancelButtonClick; // Экземпляр делегата для второй

// кнопки

// Перебираем кнопки:

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

Btns[i].Click+=BH[i]; // Регистрация обработчика для

// кнопки

}

// Перебираем кнопки-переключатели:

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

RBtns[i].CheckedChanged+=BH[0]; // Регистрация обработчика

}

продолжение

294

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

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