Опубликован: 13.07.2010 | Доступ: платный | Студентов: 337 / 2 | Оценка: 4.40 / 4.20 | Длительность: 77:34:00
Самостоятельная работа 26:

Пользовательские элементы управления

Аннотация: Графический интерфейс пользователя (GUI - Graphics User Interface). Построение элемента управления BeepButton. Переопределение наследуемого от Control виртуального метода диспетчеризации события Click. Проектирование диалогового окна сообщений MyDialogBox. Тестирование пользовательских элементов BeepButton и MyDialogBox. Проектирование музыкальной кнопки SoundButton. Создание компонента блока музыкальных кнопок SoundButtonBox. Подготовка файлов звука к проигрыванию компонентом SoundButtonBox. Тестирование компонента SoundButtonBox. Рисование круглой кнопки.

Файлы к лабораторной работе Вы можете скачать здесь.

Элементы управления являются посредниками между приложением и пользователем. Они составляют так называемый графический интерфейс пользователя ( GUI - Graphics User Interface). Их задача состоит в отображении информации для пользователя, обеспечении удобного ввода и генерации событий, отрабатывающих предпочтения пользователя.

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

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

Упражнение 1. Построение элемента управления BeepButton

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

Создание заготовки библиотеки компонентов

  • Создайте новый пустой проект командой File/New/Project и заполните окно мастера так

  • В панели Solution Explorer выделите корневой узел проекта UserControls и через контекстное меню выполните команду Properties


  • Откройте вкладку Application свойств оболочки и настройте поля Default namespace и Output type как показано на рисунке

  • В панели Solution Explorer вызовите для корневого узла проекта UserControls контекстное меню и выполните команду Add/Component


  • Добавьте к проекту новый файл компонента с именем BeepButton.cs

  • В рабочей области конструктора форм щелкните на ссылке click here to switch to code view или исполните команду контекстного меню View Code, чтобы перейти в режим редактирования кода


  • В панели Solution Explorer для узла References, где уже должна находиться ссылка на библиотечную сборку System, выполните команду Add Reference


  • Удерживая клавишу Ctrl через окно Add Reference выделите и добавьте к проекту ссылки на библиотечные сборки System.Drawing и System.Windows.Forms


  • Убедитесь, что теперь узел References проекта стал выглядеть так


  • Перейдите в режим редактирования файла BeepButton.cs и откорректируйте его так
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
  
using System.Media; // Для звука 
    
namespace MyCompany.UserControls
{
    public partial class BeepButton : Button 
    {
        public BeepButton()
        {
            InitializeComponent();
        }
    
        public BeepButton(IContainer container)
        {
            container.Add(this);
    
            InitializeComponent();
        }
    }
}
Листинг 19.1. Файл BeepButton.cs после корректировки

Класс Button является наследником класса Component, поэтому мы спокойно применяем его в качестве базового, продолжая цепочку наследования.