duminică, 14 februarie 2016

C#14 Crearea unei aplicații cu interfață grafică

Aplicațiile cu interfață grafică se pot realiza și prin scriere directă a codului, dar volumul de muncă este imens. Vom folosi în schimb facilitățile automate ale mediului de lucru Microsoft Visual Studio (sau ale altui mediu de lucru), care va genera automat părțile de cod necesare.

Prima aplicație grafică

Deschidem Visual Studio și din meniul New Project alegem Windows Forms Application. O Formă este de fapt o fereastră. În această fereastră vom crea și vom programa funcționalitatea unor obiecte. Vom alege ca nume pentru proiectul nostru, Salut. În acest moment, sistemul Visual Studio desenează pe monitor schița unei ferestre cu numele Form1. Dacă nu avem în partea stângă a ecranului un tab (subdiviziune a ferestrei mamă) numită Toolbox, îl afișăm, cu atributul Dock. 

Din Toolbox tragem prin glisare (drag and drop) un button pe suprafața ferestrei Form1. Facem click cu butonul din dreapta al mousului pe acest buton și alegem din lista derulantă Properties. În fereastra Properties schimbăm valoarea proprietății Text în Apasa.

Programarea evenimentului click.

În fereastra Properties facem click pe iconul Fulger (Events). Alegem din lista de evenimente evenimentul Click și apăsăm enter. Se deschide editorul de cod. Suntem invitați să scriem metoda button1_Click. Acesta este handler-ul de eveniment. Metoda arată astfel:

namespace salut
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello world!");
        }
    }
}



Din tot codul de mai sus, noi scriem doar MessageBox.Show(Hello world!); restul este generat automat de către Visual Studio. Linia de cod pe care am scris-o apelează o metodă de sistem, care provoacă afișarea unui mesaj cu textul pus în paranteză.

Compilăm  și rulăm aplicația.


Controale,  proprietăți și evenimente

Controalele sunt instanțe ale unor clase .NET definite în spațiul de nume System.Windows.Forms. Aceste clase derivă din clasa Control. Printre cele mai folosite controale se nuără ListBox, ComboBox, Button, CheckBox, RadioButton.


Proprietățile se definesc  la momentul proiectării, accesând fereastra Properties asociată controlului, dar pot fi modificate și la run-time. Ele determină elemente precum aspectul sau poziția și funcționalitatea unui control.

Evenimentele sunt cele care conduc funcționalitatea aplicației. Un eveniment poate fi click sau dublu-click sau mouse-over. Evenimentele sunt atașate unui control care devine obiect publisher și sunt interceptate de obiecte abonați sau subscriber. În cazul de mai sus, button1 este publisher iar Form1 este subscriber. Codul necesar subscrierii și definiția handlerului se creează automat când utilizăm panoul Properties.

Reluăm proiectul și mai adăugăm două controale: un CheckBox și un TextBox.
Pentru CheckBox, modificăm din panoul Properties proprietatea Text în Validare. și proprietatea Name în Verif.

Pentru caseta text, atribuim  proprietății Nume valoarea edit.

Înlocuim corpul metodei button1_Click cu următorul:

            Control c = (Control)sender;
            MessageBox.Show("Ati facut click pe controlul: " + c.Name + "cu eticheta " + c.Text);


Metoda arată astfel:

         private void button1_Click(object sender, EventArgs e)
        {
            Control c = (Control)sender;
            MessageBox.Show("Ati facut click pe controlul: " + c.Name + "cu eticheta " + c.Text);
        }
    


Forțăm prin intermediul panoului Properties ca și controalele CheckBox și TextBox să trateze evenimentul click cu aceeași metodă. Acest lucru se realizează în mod analog, prin selectarea fulgerului, selectarea evenimentului Click și apoi prin selectarea din lista atașată în dreapta a metodei Button1_Click.

Compilăm, rulăm și testăm aplicația. 

Schimbăm comportamentul obiectelor și facem ca în caseta text sa se afișeze un anumit text când este selectat checkBox, și alt text când nu este selectat checkBox. Handlerul de eveniment click va arăta astfel:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Verifica");
            if (this.checkBox1.Checked)
                this.textBox1.Text = "Ai verificat";
            else
                this.textBox1.Text = "Nu ai verificat";

        }
    }


  this este referință către obiectul conținător al metodei, deci către Form1, așadar expresia this.checkBox1 semnifică obiectul checkBox1 al obiectului Form1. Checked este o proprietate a acestui checkBox (se poate identifica în panoul Proprties) care are valoarea true daca este bifat checkBox-ul.

Niciun comentariu:

Trimiteți un comentariu