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


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

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

Примечание

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

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

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

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

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

  2. Из списка проектов Visual C# выберите шаблон проекта Библиотека элементов управления Windows Forms и в поле Имя введите 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. Из меню Файл выберите команду Сохранить все, чтобы сохранить проект.

    Примечание

    Обратите внимание на то, что наглядный конструктор теперь недоступен.Поскольку элемент управления 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 Forms.

  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#

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

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

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