Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1447 / 157 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Лекция 17:

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

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

Файлы к лекции Вы можете скачать здесь.

Элементы управления являются посредниками между приложением и пользователем. Они составляют так называемый графический интерфейс пользователя (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();
        }
    }
}
Листинг 17.1 . Файл BeepButton.cs после корректировки

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


Максим Филатов
Максим Филатов

Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет:

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

 

Как активировать код?