Udostępnij za pośrednictwem


Porady: dziedziczenie z istniejących formantów formularzy systemu Windows

Jeśli chcesz rozszerzyć funkcjonalność istniejącej kontrolki, możesz utworzyć kontrolkę pochodzącą z istniejącej kontrolki za pomocą dziedziczenia. Dziedzicząc po istniejącej kontrolce, dziedziczysz wszystkie funkcje i właściwości wizualne tej kontrolki. Jeśli na przykład tworzysz kontrolkę dziedziczona z Buttonklasy , nowa kontrolka będzie wyglądać i działać dokładnie tak jak kontrolka standardowa Button . Następnie można rozszerzyć lub zmodyfikować funkcjonalność nowej kontrolki za pomocą implementacji niestandardowych metod i właściwości. W niektórych kontrolkach można również zmienić wygląd odziedziczonej kontrolki, przesłaniając jej OnPaint metodę.

Aby utworzyć dziedziczona kontrolkę

  1. W programie Visual Studio utwórz nowy projekt aplikacji Windows Forms.

  2. Z menu Project (Projekt) wybierz pozycję Add New Item (Dodaj nowy element).

    Zostanie wyświetlone okno dialogowe Dodawanie nowego elementu.

  3. W oknie dialogowym Dodawanie nowego elementu kliknij dwukrotnie kontrolkę niestandardową.

    Do projektu zostanie dodana nowa kontrolka niestandardowa.

  4. Jeśli używasz:

    • Visual Basic w górnej części Eksplorator rozwiązań kliknij pozycję Pokaż wszystkie pliki. Rozwiń węzeł CustomControl1.vb, a następnie otwórz plik CustomControl1. Projektant.vb w Edytorze kodu.
    • W języku C#otwórz plik CustomControl1.cs w Edytorze kodu.
  5. Znajdź deklarację klasy, która dziedziczy z Controlklasy .

  6. Zmień klasę bazową na kontrolkę, z której chcesz dziedziczyć.

    Jeśli na przykład chcesz dziedziczyć z Buttonklasy , zmień deklarację klasy na następującą:

    Partial Class CustomControl1
        Inherits System.Windows.Forms.Button
    
    public partial class CustomControl1 : System.Windows.Forms.Button
    
  7. Jeśli używasz języka Visual Basic, zapisz i zamknij element CustomControl1. Projektant.vb. Otwórz plik CustomControl1.vb w edytorze kodu.

  8. Zaimplementuj wszelkie niestandardowe metody lub właściwości, które będą uwzględniane przez kontrolkę.

  9. Jeśli chcesz zmodyfikować graficzny wygląd kontrolki, zastąpij metodę OnPaint .

    Uwaga

    Zastępowanie OnPaint nie umożliwi modyfikowania wyglądu wszystkich kontrolek. Te kontrolki, które mają wszystkie obrazy wykonane przez system Windows (na przykład TextBox), nigdy nie wywołają metody OnPaint , a tym samym nigdy nie będą używać kodu niestandardowego. Zapoznaj się z dokumentacją Pomocy dotyczącą określonej kontrolki, którą chcesz zmodyfikować, aby sprawdzić, czy OnPaint metoda jest dostępna. Aby uzyskać listę wszystkich kontrolek formularzy systemu Windows, zobacz Kontrolki do użycia w formularzach systemu Windows. Jeśli kontrolka nie ma OnPaint na liście jako metody składowej, nie można zmienić jej wyglądu przez zastąpienie tej metody. Aby uzyskać więcej informacji na temat malowania niestandardowego, zobacz Custom Control Painting and Rendering (Malowanie i renderowanie kontrolek niestandardowych).

    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. Zapisz i przetestuj kontrolkę.

Zobacz też