НА ЗАМЕТКУ
Существует возможность сделать пользовательский элемент управления видимым на стадии проектирования!
В данном примере пользовательский элемент управления для простоты создается во время выполнения. Чтобы отобразить его для разработчика на стадии проектирования, в результате чего этот элемент управления будет виден в окне конструктора форм подобно любому другому стандартному элементу управления, в приложение следует кое-что добавить. Обсуждение этого вопроса выходит за рамки данной книги, однако соответствующая информация содержится в документации по .NET Compact Framework.
Рис. 11.6.
Для создания и запуска данного приложения потребуется выполнить следующие действия:
1. Начните новый проект Smart Device в Visual Studio NET и выберите в качестве целевой платформы Pocket PC.
2. Добавьте в проект новый класс и назовите его myButton. Перейдя в окно редактора кода класса введите код, представленный в листинге 11.9.
3. Перейдите в окно конструктора форм для формы Form1. Добавьте в форму кнопку. Дважды щелкните на кнопке для перехода в окно редактора кода и введите код, представленный в обработчике события button1_Click в листинге 11.10.
4. Введите за кодом обработчика события button1_Click оставшуюся часть кода, представленного в листинге 11.10.
5. Скомпилируйте пример и запустите его на выполнение. Щелкните на кнопке Button1.
//Простейший пользовательский элемент управления
public class myButton : System.Windows.Forms.Control {
//--------------------------------------
//Объекты, необходимые нам для рисования
//--------------------------------------
System.Drawing.Brush m_RectangleBrush;
System.Drawing.Brush m_TextBrush;
System.Drawing.Color m_RectangleColor;
//----------------------------------------------------
//Событие, которое мы хотим предоставить на обработку.
//Это - общедоступный делегат.
//----------------------------------------------------
public event System.EventHandler EventButtonTurningBlue;
//Конструктор
public myButton : base {
//ПРИМЕЧАНИЕ: Мы должны написать функцию Dispose и
//деструктор, который освобождает память от этих объектов
//Создать необходимые кисти
m_RectangleColor = System.Drawing.Color.Black;
m_RectangleBrush = new System.Drawing.SolidBrush(m_RectangleColor);
m_TextBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White);
}
//-----------------------------------------------
//Внутренним откликом на щелчок является
//повторение трех различных цветов кнопки в цикле
//-----------------------------------------------
protected override void OnClick(System.EventArgs e) {
//--------------------------------------------------------