Podstawy obiektowości. Własności metody get, set

Cel: Napisz aplikację, w której odczytasz, zmienisz bieżący kolor tła wybranego elementu formatki po wskazaniu przyciskiem myszki

Własności metody get set. Visual studio C#

Budowana aplikacja w celach ćwiczeniowych ma wykorzystać metodę get (zwraca wartość właściwości) oraz set (ustawia wartość właściwości) wybranego pola obiektu (klasy, struktury). W tym przypadku będzie to zmienna typu Color dla tła wskazanego obiektu formatki aplikacji.

Krok 1: Układ komponentów

W projekcie aplikacji użyjemy poniższych komponentów

Proponowany układ kontrolek wygląda jak poniżej

Własności metody get set. Visual studio C# układ kontrolek

Krok 2: Ustawiamy podstawowe cechy kontrolek

Kontrolce Panel i GroupBox przypisujemy pozycję dokowania w obszarze roboczym formatki. W zależności od przeznaczenia kontrolki wprowadzamy odpowiedni tekst

Ustawiamy podstawowe cechy kontrolek Visual studio C# układ kontrolek

Kontrolkom HScrollBar ustawiamy wartość skoku kroku przesuwu (właściwość LargeChange) oraz granicę maksymalnej wartości (właściwość Maximum)

kontrolka HScrollBar Visual studio C# układ kontrolek

Krok 3: Definiujemy metodę odczytu i zapisu koloru kontrolki

Przechodzimy do kodu aplikacji- standardowo plik Form1.cs. Klawisz F7 ułatwia przejście do edytora kodu. W kodzie definiujemy zmienną prywatną typy Control (w kodzie programu to zmienna o nazwie c) oraz prywatną metodę przypisania i odczytu koloru. W kodzie programu, to metoda o nazwie KolorTla

Visual Studio C# układ kontrolek

Skompiluj program i sprawdź czy nie ma błędów kompilacji.

Krok 4: Odczyt położenia suwaków

Definiujemy bezparametrową funkcję odczytującą położenie suwaków. Położenie suwaków będzie związane z wartością składowej koloru oraz kanału przezroczystości. Kolory tła kontrolek opisane są typem Color w postaci 32 bitów, po 8 bitów na każda składową (metoda odczytu Color.FromArgb)

składowa koloru

Tę funkcje wywołamy w momencie uruchomienia aplikacji oraz przy każdorazowym zmianie położenia suwaków.

Krok 5: Pierwszy odczyt koloru

Pierwszy odczyt koloru wybranej kontrolki na sztywno w kodzie programu (tu kontrolka panel1) odbywa się w momencie uruchomienia aplikacji. W tym celu modyfikujemy zawartość metody publicznej public Form1. Jest to zarazem konstruktor klasy Form dla głównej formatki.

konstruktor klasy Form

Skompiluj i uruchom program. W zależności od ustawionego koloru tła panelu wskazania suwaków są różne.

Krok 6: Tworzymy metodę zmiany koloru przy użyciu suwaków

Zaznaczamy grupę suwaków i przypisujemy im akcję zmiany wartości położenia suwaka w postaci wspólnej funkcji dla każdego suwaka. W kodzie programu nazwa funkcji to: hScrollBar1_Scroll(object sender, ScrollEventArgs e)

Nazwa funkcji oraz jej deklaracja odbywa się automatycznie na przykład po szybkim dwukrotnym kliknięciu po wybraniu akcji Scroll. Patrz poniższy rysunek

akcja scroll

Ciało tej funkcji wypełniamy poniższym kodem

akcja scroll ciało funkcji

Skompiluj program i sprawdź efekt działania.

Krok 7: Zmiana koloru kontrolki wskazanej myszką

W zależności jaka kontrolka przypisana jest do zmiennej c typu Control, to dla niej zmieniane są składowe koloru. Przypisanie możemy zrobić na sztywno w kodzie programu (do tej pory jest to panel1) lub przez wskazanie myszką.

Wskazanie myszką wymaga podmianę kontrolowanego obiektu. W kodzie programu realizuje to instrukcja


c=(Control)sender;

Gdzie sender to zmienna typu object

Wybranym kontrolką przypisujemy możliwość takiej zmiany. Zrobimy to w metodzie kliknięcia myszką (akcja Click) w obszar pole wybranej kontrolki. Do tego celu wybierzemy kontrolki zawarte w kontrolce panel1. Patrz poniższy rysunek

akcja Click Button c# visual studio

Ciało funkcji zawiera poniższy kod

akcja Click Button obsługa kliknięcia

Skompiluj program i sprawdź efekt działania aplikacji

Zawartość pliku Form1.cs

Pełny kod pliku głownej klasy Form utworznej aplikacji

Form1.cs


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WlasnosciMetody
{
    public partial class Form1 : Form
    {
        private Control c;
        /* 
         właściwość KolorTla zwraca odczyt zmiennej typu Color- metoda odwołania get
         oraz pozwala ustawić nowe parametry zmiennet typu Color- metoda przypisania set
        */
        private Color KolorTla
        {
            get { return c.BackColor;}
            set { c.BackColor = value;}
        }

        private void UstawTekst()
        {
            label1.Text = "R: " + hScrollBar1.Value.ToString();
            label2.Text = "G: " + hScrollBar2.Value.ToString();
            label3.Text = "B: " + hScrollBar3.Value.ToString();
            label4.Text = "A: " + hScrollBar4.Value.ToString();
        }

        private void UaktualnijScrolle()
        {
            /*
            funkcja uaktualnia paski scrolli po kliknieciu w obiekt,
            uaktualnienie odbywa się według składowych odczytanego bieżącego 
            koloru klikniertego obiektu,
            wywołanie jest w private void button1_Click(object sender, EventArgs e)
            */
            hScrollBar1.Value = KolorTla.R;
            hScrollBar2.Value = KolorTla.G;
            hScrollBar3.Value = KolorTla.B;
            hScrollBar4.Value = KolorTla.A;
            UstawTekst();
        }

        public Form1()
        {
            InitializeComponent();
            //od tej pory kontrolka panel1 jest przypisna do zmiennej c klasy Control
            c = panel1;
            //ustaw pozycję suwaka kanału alfa na odczytaną z kontrolki
            hScrollBar4.Value = KolorTla.A;
            UstawTekst();
        }


        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {
            Color kolor = Color.FromArgb(
                hScrollBar4.Value,//kanał Alfa
                hScrollBar1.Value,//składowa czerwona
                hScrollBar2.Value,//składowa zielona
                hScrollBar3.Value//składowa niebieska
                );
            //przypisz nowy kolor do zmiennej prywatnej c klasy Control
            KolorTla = kolor;
            UstawTekst();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            /*
             klikniecie myszką w obiekt przekazuje
             zmianę aktywnego obiektu w zmiennej c typu Control 
            */
            c = (Control)sender;
            UstawTekst();
            //info o aktywnym obiekcie, w którym zmieniany jest kolor tła
            groupBox1.Text = "Składowe koloru (aktywny obiekt: " + c.Name + " )";
            UaktualnijScrolle();
        }
    }
}
Układ okresowy- kod qr
Układ okresowy

Układ okresowy pierwiastków- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Alkomat- wirtualny test kod qr
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Taklarz- olinowanie stałe kod qr
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz