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


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

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

Примечание

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

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

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

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

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

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

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

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

  4. Нажмите кнопку Показать все файлы в обозревателе решений.

  5. Откройте узел ValueButton.vb для отображения созданного конструктором файла кода ValueButton.Designer.vb. Откройте этот файл в Редакторе кода.

  6. Найдите оператор Class, Partial Public Class ValueButton, и измените тип, наследуемый этим элементом управления от UserControl, на Button. То позволит элементу управления унаследовать всю функциональность элемента управления Button.

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

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

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

Примечание

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

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

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

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

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

  2. Найдите оператор Public Class ValueButton. Непосредственно под этим оператором введите следующий код:

    [Visual Basic]

    ' Creates the private variable that will store the value of your 
    ' property.
    Private varValue as integer
    ' Declares the property.
    Property ButtonValue() as Integer
    ' Sets the method for retrieving the value of your property.
       Get
          Return varValue
       End Get
    ' Sets the method for setting the value of your property.
       Set(ByVal Value as Integer)
          varValue = Value
       End Set
    End Property
    

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

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

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

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

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

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

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

Чтобы создать тестовый проект

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

  2. Выберите узел проектов Visual Basic и щелкните пункт Приложение Windows Forms.

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

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

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

  6. Перейдите на вкладку Проекты.

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

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

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

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

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

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

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

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

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

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

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

  8. Дважды щелкните файл ValueButton1.

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

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

    [Visual Basic]

    Label1.Text = CStr(ValueButton1.ButtonValue)
    
  10. В обозревателе решений щелкните правой кнопкой мыши Тест и выберите в контекстном меню команду Назначить автозагружаемым проектом.

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

    Появится Form1.

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

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

См. также

Задачи

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

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

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

Разработка пользовательских элементов управления Windows Forms в .NET Framework

Inheritance in Visual Basic

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