Поделиться через


Пример. Наследование элементов управления форм Windows Forms с помощью Visual C#

Обновлен: Ноябрь 2007

Наследование позволяет создавать в Visual C# 2005 эффективные специализированные элементы управления. С помощью наследования можно создавать элементы управления, которые не только сохраняют все функциональные возможности стандартных элементов управления форм Windows Forms, но и реализуют пользовательские функции. В этом пошаговом руководстве будет создан простой наследуемый элемент управления ValueButton. Этот элемент наследует функциональные возможности стандартной кнопки Button Windows Forms и реализует настраиваемое свойство ButtonValue.

5h0k2e6x.alert_note(ru-ru,VS.90).gifПримечание.

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска среды. Для изменения настроек выберите Импорт и экспорт параметров в меню Сервис. Дополнительные сведения см. в разделе Параметры Visual Studio.

Создание проекта

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

Чтобы создать библиотеку элементов управления ValueButtonLib и элемент управления ValueButton

  1. В меню Файл выберите Создать и выберите пункт Проект, чтобы открыть диалоговое окно Новый проект.

  2. Из списка проектов Visual C# выберите шаблон проекта Библиотека элементов управления Windows и в поле Имя введите ValueButtonLib.

    Имя проекта (ValueButtonLib) также назначается по умолчанию корневому пространству имен. Для определения имен компонентов в сборке используется корневое пространство имен. Например, если в двух сборках содержатся компоненты с именем ValueButton, то можно указать свой компонент ValueButton, используя имя ValueButtonLib.ValueButton. Дополнительные сведения см. в разделе Пространства имен (Руководство по программированию в C#).

  3. В Обозревателе решений щелкните правой кнопкой мыши UserControl1.cs и выберите в контекстном меню команду Переименовать. Измените имя файла на ValueButton.cs. Нажмите кнопку Да, чтобы переименовать все ссылки на элемент кода UserControl1.

  4. В Обозревателе решений щелкните правой кнопкой мыши файл ValueButton.cs и выберите Просмотреть код.

  5. Найдите строку инструкции class, public partial class ValueButton, и измените тип, наследуемый этим элементом управления от UserControl, на Button. То позволит элементу управления унаследовать всю функциональность элемента управления Button.

  6. В Обозревателе решений откройте узел ValueButton.cs для отображения созданного файла кода ValueButton.Designer.cs. Откройте этот файл в Редакторе кода.

  7. Найдите метод InitializeComponent и удалите строку, Присваивающую свойство AutoScaleMode. Это свойство отсутствует в элементе управления Button.

  8. В меню Файл выберите команду Сохранить все, чтобы сохранить проект.

    5h0k2e6x.alert_note(ru-ru,VS.90).gifПримечание.

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

Добавление свойства в наследуемый элемент управления

Один из возможных способов использования наследуемых элементов управления форм Windows Forms — это создание элементов управления, внешне идентичных стандартным элементам управления, но предоставляющих настраиваемые свойства. В этом разделе в элемент управления будет добавлено свойство ButtonValue.

Чтобы добавить свойство Value, выполните следующие действия.

  1. В Обозревателе решений щелкните правой кнопкой мыши ValueButton.cs и выберите команду Просмотреть код.

  2. Найдите инструкцию class. Сразу после закрывающей скобки ({) введите следующий код:

    [C#]

    // Creates the private variable that will store the value of your 
    // property.
    private int varValue;
    // Declares the property.
    public int ButtonValue
    {
       // Sets the method for retrieving the value of your property.
       get
       {
          return varValue;
       }
       // Sets the method for setting the value of your property.
       set
       {
          varValue = value;
       }
    }
    

    В этом коде задаются методы для сохранения и извлечения свойства ButtonValue. Оператор get задает значение, которое сохраняется в закрытой переменной varValue, а оператор set присваивает значение закрытой переменной с помощью зарезервированного слова value.

  3. В меню Файл выберите команду Сохранить все, чтобы сохранить проект.

Тестирование элемента управления

Элементы управления не являются автономными проектами; они должны быть включены в контейнер. Чтобы протестировать элемент управления, нужно запустить его в каком-либо тестовом проекте. Кроме того, нужно построить (скомпилировать) элемент управления, чтобы он был доступен проекту. В этом разделе демонстрируется построение элемента управления и его тестирование в форме Windows Form.

Чтобы построить элемент управления

  • В меню Построение нажмите Построить решение.

    При построении компилятор не должен выдать ни одной ошибки или предупреждения.

Создание тестового проекта

  1. В меню Файл выберите Добавить и щелкните Новый проект, чтобы открыть диалоговое окно Добавление нового проекта.

  2. Выберите узел Windows под узлом Visual C# и щелкните Приложение Windows.

  3. В поле Имя введите Test.

  4. В Обозревателе решений щелкните правой кнопкой мыши узел Ссылки тестового проекта, а затем выберите команду Добавить ссылку, чтобы открыть диалоговое окно Добавление ссылки.

  5. Перейдите на вкладку Проекты. Под строкой Имя проекта будет отображен проект ValueButtonLib. Дважды щелкните проект, чтобы добавить ссылку на тестовый проект.

  6. В Обозревателе решений щелкните правой кнопкой мыши Test и выберите Построить.

Чтобы добавить элемент управления в форму, выполните следующие действия.

  1. В Обозревателе решений щелкните правой кнопкой мыши Form1.cs и выберите команду Открыть в конструкторе.

  2. На панели элементов щелкните ValueButtonLib Components. Дважды щелкните ValueButton.

    Элемент ValueButton появится в форме.

  3. Щелкните правой кнопкой мыши элемент ValueButton и выберите команду Свойства.

  4. В окне Свойства просмотрите свойства этого элемента управления. Обратите внимание, что все они идентичны свойствам стандартной кнопки, за исключением дополнительного свойства ButtonValue.

  5. Установите свойство ButtonValue равным 5.

  6. На вкладке Все формы Windows Formsпанели элементов дважды щелкните Подпись, чтобы добавить в форму элемент Label.

  7. Переместите подпись в центр формы.

  8. Дважды щелкните valueButton1.

    В Редакторе кода откроется событие valueButton1_Click.

  9. Вставьте следующую строку кода.

    [C#]

    label1.Text = valueButton1.ButtonValue.ToString();
    
  10. В окне Обозревателя решений щелкните правой кнопкой мыши Тест и выберите команду Назначить автозагружаемым проектом.

  11. В меню Отладка выберите команду Начать отладку.

    Появится Form1.

  12. Нажмите кнопку valueButton1.

    В элементе label1 будет отображена цифра 5, что подтверждает передачу свойства ButtonValue наследуемого элемента управления элементу label1 с помощью метода valueButton1_Click. Таким образом, элемент управления ValueButton наследует все функциональные возможности стандартной кнопки форм Windows Forms и, кроме того, предоставляет дополнительное настраиваемое свойство.

См. также

Задачи

Практическое руководство. Отображение элемента управления в диалоговом окне настройки панели элементов

Пример. Создание составного элемента управления с помощью C#

Другие ресурсы

Программирование с использованием компонентов

Примеры создания компонентов