Udostępnij za pośrednictwem


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ą dziedziczona 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 , ValueButtonLibjest 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 Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik 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 Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję ValueButton.cs i wybierz polecenie Wyświetl kod.

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

  5. W Eksplorator rozwiązań otwórz węzeł ValueButton.cs, aby wyświetlić wygenerowany przez projektanta plik kodu ValueButton.Projektant. 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

    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 ta, z którą dziedziczy klasę (czyli Button), chyba że została 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 Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję 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ć kontrolkę projektowi testowemu, kompilując (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ź wartość Test.

  4. W Eksplorator 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ę z etykietą Projekty. Projekt ValueButtonLib zostanie wyświetlony w obszarze Nazwa projektu. Kliknij dwukrotnie projekt, aby dodać odwołanie do projektu testowego.

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

Aby dodać kontrolkę do formularza

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik Form1.cs i wybierz polecenie Wyświetl Projektant z menu skrótów.

  2. W przyborniku wybierz pozycję ValueButtonLib Components (Składniki ValueButtonLib). Kliknij dwukrotnie wartośćButton.

    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 przybornika 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 Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Test, a następnie wybierz polecenie Ustaw jako projekt startowy z menu skrótów.

  11. Z menu Debugowanie wybierz pozycję Rozpocznij debugowanie.

    Form1 Pojawia się.

  12. Kliknij pozycję valueButton1.

    Cyfra "5" jest wyświetlana w label1pliku , pokazując, że ButtonValue właściwość dziedziczonej kontrolki została przekazana do label1valueButton1_Click metody . ValueButton W związku z tym kontrolka dziedziczy wszystkie funkcje standardowego przycisku Windows Forms, ale uwidacznia dodatkową właściwość niestandardową.

Zobacz też