Чтение онлайн

ЖАНРЫ

Программирование мобильных устройств на платформе .NET Compact Framework

Салмре Иво

Шрифт:

Чтобы обеспечить работоспособность динамического элемента управления после его создания, вы должны выполнить три дополнительных типа операций:

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

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

действий:

 а. Вам нужна функция, которая является приемником события (то есть вызывается при его запуске).

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

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

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

newButton.Click += new System.EventHandler(this.ClickHandlerForButtons);

Более подробно, по составляющим:

 а. this.ClickHandlerForButtons — это функция приемника событий.

 б. new System.EventHandler — это делегат, указывающий на приемник событий.

 в. newButton.Click +=… — добавляет обработчик событий в список обработчиков событий, которые вызываются при запуске события.

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

3. Задание, путем использования свойства Parent нового элемента управления, в качестве родительской той формы, на которой этот элемент должен отображаться. Фактически, в результате выполнения именно этого последнего шага элемент управления создается и размещается на форме. Если значением свойства Parent элемента управления является null, то элемент управления не принадлежит форме.

Пример создания динамического элемента управления

На рис. 13.8 и в листинге 13.2 представлен пример приложения, иллюстрирующего создание кнопок Button и подключение к ним обработчиков событий Click. Вы можете легко адаптировать пример для создания любых желаемых элементов управления. 

Рис. 13.8. Динамическое создание элементов управления во время выполнения

Представленный в листинге 13.2 код принадлежит форме в проекте Pocket PC. Для создания и запуска приложения потребуется выполнить следующие действия:

1. Запустите Visual Studio .NET (2003 или более позднюю версию) и создайте приложение C# Smart Device Application.

2. Выберите в качестве целевой платформы Pocket PC. (Для вас будет автоматически создан проект, и на экране появится окно конструктора форм Pocket PC.)

3. Добавьте в форму кнопку Button и переименуйте ее в buttonCreateNewButtons.

4. Дважды щелкните на кнопке, которую вы только что добавили в окне конструктора форм. На экране отобразится окно редактора кода вместе со скелетом функции privatevoidbuttonCreateNewButtons_Click(object sender, System.EventArgs e).

Введите в эту функцию приведенный ниже код.

5. Перейдя в окно редактора кода, введите оставшуюся часть приведенного ниже кода, включая те его части, которые расположены выше и ниже кода функции, который вы только что ввели.

6. Установите для свойства MinimizeBox формы значение false. Благодаря этому во время выполнения в верхней правой части формы появится кнопка OK, с помощью которой вы легко сможете закрыть форму и выйти из приложения. Эта возможность оказывается очень полезной при многократном тестировании приложения.

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

Листинг 13.2. Динамическое создание элементов управления на форме во время выполнения

//-------------------------------------

//Счетчик количества создаваемых кнопок

//-------------------------------------

private int m_nextNewButtonIndex;

//---------------------------------------------------------------

//ОБРАБОТЧИК СОБЫТИЙ: Обработчик щелчка на кнопке, которая

// имеется на нашей форме.

//

//Эта функция создает новую кнопку, присоединяет ее к нашей форме

//и подключает обработчик события щелчка для нее

//---------------------------------------------------------------

private void buttonCreateNewButtons_Click(object sender, System.EventArgs e) {

 //Впоследствии мы начнем создавать новые кнопки, начиная

 //снизу экрана, поэтому ограничиваем их количество восемью

 if (m_nextNewButtonIndex > 8) {

return;

 }

 //----------------------------------------------------

 //Создать кнопку (еще не присоединенную к нашей форме)

 //установить ее местоположение, размеры и текст

 //----------------------------------------------------

 const int newButtonHeight = 15;

 System.Windows.Forms.Button newButton;

 newButton = new System.Windows.Forms.Button;

 newButton.Width = 100;

 newButton.Height = newButtonHeight;

 newButton.Left = 2;

 newButton.Top = (newButtonHeight + 2) * m_nextNewButtonIndex;

 newButton.Text = "New Button " + m_nextNewButtonIndex.ToString;

 //--------------------------------------------------

 //Присоединить обработчик к событию щелчка на данном

Поделиться с друзьями: