*/
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 (продолжение)