Практическое руководство. Наследование существующих элементов управления Windows Forms

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

Создание наследуемого элемента управления

  1. В Visual Studio создайте новый проект приложения Windows Forms.

  2. В меню Проект выберите команду Добавить новый элемент.

    Откроется диалоговое окно Добавление нового элемента.

  3. В диалоговом окне Добавление нового элемента дважды щелкните пункт Пользовательский элемент управления.

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

  4. Если вы используете:

    • Visual Basic, в верхней части окна Обозреватель решений щелкните параметр Показать все файлы. Разверните папку CustomControl1.vb и откройте файл CustomControl1.Designer.vb в редакторе кода.
    • C#, откройте файл CustomControl1.vb в редакторе кода.
  5. Найдите объявление класса, который наследует от Control.

  6. Измените базовый класс для элемента управления, который нужно использовать для наследования.

    Например, для наследования элемента управления из Button измените объявление класса на следующее:

    Partial Class CustomControl1
        Inherits System.Windows.Forms.Button
    
    public partial class CustomControl1 : System.Windows.Forms.Button
    
  7. Если используется Visual Basic, сохраните и закройте файл CustomControl1.Designer.vb. Откройте файл CustomControl1.vb в редакторе кода.

  8. Реализуйте необходимые пользовательские методы или свойства, которые будут входить в ваш элемент управления.

  9. Чтобы изменить графический интерфейс элемента управления, переопределите метод OnPaint.

    Примечание.

    Переопределение OnPaint не позволит изменить внешний вид всех элементом управления. Эти элементы управления, для которых всю отрисовку выполняет Windows (например, TextBox), никогда не вызывают метод OnPaint, а значит никогда не используют пользовательский код. Сведения о том, доступен ли метод OnPaint для конкретного элемента управления, который вы хотите изменить, см. в справочной документации. Список всех элементов управления Windows Forms см. в разделе Элементы управления для использования в формах Windows Forms. Если метод OnPaint не указан в качестве метода-члена для соответствующего элемента управления, изменить внешний вид этого элемента управления путем перезаписи данного метода нельзя. Дополнительные сведения о пользовательском оформлении см. в разделе Рисование и отрисовка пользовательского элемента управления.

    Protected Overrides Sub OnPaint(ByVal e As _
       System.Windows.Forms.PaintEventArgs)
       MyBase.OnPaint(e)
       ' Insert code to do custom painting.
       ' If you want to completely change the appearance of your control,
       ' do not call MyBase.OnPaint(e).
    End Sub
    
    protected override void OnPaint(PaintEventArgs pe)
    {
       base.OnPaint(pe);
       // Insert code to do custom painting.
       // If you want to completely change the appearance of your control,
       // do not call base.OnPaint(pe).
    }
    
  10. Сохраните и проверьте элемент управления.

См. также