Udostępnij przez


Przewodnik: dziedziczenie z kontrolki Formularzy systemu Windows za pomocą języka C#

Za pomocą języka C#można tworzyć zaawansowane kontrolki niestandardowe za pomocą dziedziczenia. Dzięki dziedziczeniu można tworzyć kontrolki, które zachowują wszystkie nieodłączne funkcje standardowych kontrolek Windows Forms, ale także zawierają funkcje niestandardowe. W tym przewodniku utworzysz prostą dziedziczoną kontrolkę o nazwie ValueButton. Ten przycisk dziedziczy funkcje standardowej kontrolki Windows Forms Button i uwidacznia właściwość niestandardową o nazwie ButtonValue.

Tworzenie projektu

Podczas tworzenia nowego projektu należy określić jego nazwę, aby ustawić przestrzeń nazw katalogu głównego, nazwę zestawu i nazwę projektu oraz upewnić się, że domyślny składnik będzie znajdować się w prawidłowej przestrzeni nazw.

Aby utworzyć bibliotekę formantów ValueButtonLib i kontrolkę ValueButton

  1. W programie Visual Studio utwórz nowy projekt Biblioteka kontrolek formularzy systemu Windows i nadaj mu nazwę ValueButtonLib.

    Nazwa projektu, ValueButtonLib, jest również domyślnie przypisywana do głównej przestrzeni nazw. Główna przestrzeń nazw służy do kwalifikowania nazw składników w zestawie. Jeśli na przykład dwa zestawy zawierają składniki o nazwie ValueButton, możesz określić składnik ValueButton przy użyciu polecenia ValueButtonLib.ValueButton. Aby uzyskać więcej informacji, zobacz Przestrzenie nazw.

  2. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy UserControl1.cs, a następnie wybierz polecenie Zmień nazwę z menu skrótów. Zmień nazwę pliku na ValueButton.cs. Kliknij przycisk Tak po wyświetleniu monitu o zmianę nazwy wszystkich odwołań do elementu kodu "UserControl1".

  3. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy ValueButton.cs i wybierz polecenie Wyświetl kod.

  4. Znajdź wiersz instrukcji class, public partial class ValueButton, i zmień typ, z którego ta kontrolka dziedziczy, z UserControl na Button. Dzięki temu dziedziczona kontrolka dziedziczy wszystkie funkcje kontrolki Button .

  5. W Eksploratorze rozwiązań otwórz węzeł ValueButton.cs , aby wyświetlić plik kodu wygenerowany przez projektanta , ValueButton.Designer.cs. Otwórz ten plik w Edytorze kodu.

  6. Znajdź metodę InitializeComponent i usuń wiersz, który przypisuje AutoScaleMode właściwość. Ta właściwość nie istnieje w kontrolce Button .

  7. W menu Plik wybierz pozycję Zapisz wszystko , aby zapisać projekt.

    Uwaga / Notatka

    Projektant wizualizacji nie jest już dostępny. Ponieważ kontrolka Button wykonuje własny obraz, nie można zmodyfikować jej wyglądu w projektancie. Jej wizualna reprezentacja będzie dokładnie taka sama jak wizualna reprezentacja klasy, z której dziedziczy (czyli Button), chyba że zostanie zmodyfikowana w kodzie. Nadal można dodawać składniki, które nie mają elementów interfejsu użytkownika, do powierzchni projektowej.

Dodawanie właściwości do odziedziczonej kontrolki

Jednym z możliwych zastosowań odziedziczonych kontrolek formularzy systemu Windows jest tworzenie kontrolek, które są identyczne w wyglądzie i środowisku standardowych kontrolek Windows Forms, ale uwidaczniają właściwości niestandardowe. W tej sekcji dodasz właściwość o nazwie ButtonValue do kontrolki.

Aby dodać właściwość Value

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy ValueButton.cs, a następnie kliknij polecenie Wyświetl kod z menu skrótów.

  2. Znajdź instrukcję class. Natychmiast po pliku {wpisz następujący kod:

    // 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;
       }
    }
    

    Ten kod ustawia metody, za pomocą których ButtonValue właściwość jest przechowywana i pobierana. Instrukcja get ustawia wartość zwracaną do wartości przechowywanej w zmiennej varValueprywatnej , a set instrukcja ustawia wartość zmiennej prywatnej przy użyciu słowa kluczowego value .

  3. W menu Plik wybierz pozycję Zapisz wszystko , aby zapisać projekt.

Testowanie kontrolki

Kontrolki nie są projektami autonomicznymi; muszą być hostowane w kontenerze. Aby przetestować kontrolkę, należy podać projekt testowy, w którym ma zostać uruchomiony. Musisz również udostępnić element sterujący projektowi testowemu, budując go (kompilując). W tej sekcji utworzysz kontrolkę i przetestujesz ją w formularzu systemu Windows.

Aby utworzyć kontrolkę

W menu Kompilacja kliknij pozycję Kompiluj rozwiązanie. Kompilacja powinna zakończyć się pomyślnie bez błędów kompilatora ani ostrzeżeń.

Aby utworzyć projekt testowy

  1. W menu Plik wskaż polecenie Dodaj , a następnie kliknij pozycję Nowy projekt , aby otworzyć okno dialogowe Dodawanie nowego projektu .

  2. Wybierz węzeł systemu Windows pod węzłem Visual C# , a następnie kliknij pozycję Aplikacja Windows Forms.

  3. W polu Nazwa wprowadź Test.

  4. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy węzeł Odwołania dla projektu testowego, a następnie wybierz polecenie Dodaj odwołanie z menu skrótów, aby wyświetlić okno dialogowe Dodawanie odwołania .

  5. Kliknij kartę o etykiecie Projects. Projekt ValueButtonLib zostanie wyświetlony w obszarze Nazwa projektu. Kliknij dwukrotnie projekt, aby dodać odwołanie do projektu testowego.

  6. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy pozycję Testuj i wybierz pozycję Kompiluj.

Aby dodać kontrolkę do formularza

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy Form1.cs i wybierz pozycję Projektant widoków z menu skrótów.

  2. W przyborniku wybierz pozycję ValueButtonLib Components (Składniki ValueButtonLib). Kliknij dwukrotnie ValueButton.

    Na formularzu zostanie wyświetlony element ValueButton .

  3. Kliknij prawym przyciskiem myszy pozycję ValueButton i wybierz polecenie Właściwości z menu skrótów.

  4. W oknie Właściwości sprawdź właściwości tej kontrolki. Należy pamiętać, że są one identyczne z właściwościami udostępnianymi przez przycisk standardowy, z tą różnicą, że istnieje dodatkowa właściwość ButtonValue.

  5. Ustaw właściwość ButtonValue na 5.

  6. Na karcie Wszystkie formularze systemu Windows w przyborniku, kliknij dwukrotnie pozycję Etykieta, aby dodać kontrolkę Label do formularza.

  7. Przenieś etykietę do środka formularza.

  8. Kliknij dwukrotnie plik valueButton1.

    Edytor kodu otwiera valueButton1_Click zdarzenie.

  9. Wstaw następujący wiersz kodu.

    label1.Text = valueButton1.ButtonValue.ToString();
    
  10. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy pozycję Test i wybierz polecenie Ustaw jako projekt startowy z menu skrótów.

  11. Z menu Debugowanie wybierz pozycję Rozpocznij debugowanie.

    Form1 Pojawia się.

  12. Kliknij valueButton1.

    Cyfra "5" jest wyświetlana w label1, co pokazuje, że właściwość ButtonValue twojej dziedziczonej kontrolki została przekazana do label1 za pomocą metody valueButton1_Click. W ten sposób kontrolka typu ValueButton dziedziczy wszystkie funkcje standardowego przycisku Windows Forms, ale dodatkowo udostępnia niestandardową właściwość.

Zobacz także