duminică, 21 februarie 2016

C# 15 Controalele Button și LinkLabel

Deschidem un proiect  nou de tipul Windows Form Aplication. Vom începe prin atașarea câtorva controale.

 

SplitContainer


Un container este un obiect care grupează mai multe obiecte. Tragem pe suprafața formei Form1 un control de tipul SplitContainer. Acesta are rolul de a împărți suprafața de lucru în două părți, delimitate de un marcaj care poate fi repoziționat prin tragere cu mous-ul.

Button


Controlul Button este folosit de regulă pentru declanșarea  unei acțiuni la apariția evenimentului Click. În aplicația următoare vom exersa modificarea la run-time a unor proprietăți ale butonului, ca de pildă culoarea, textul afișat, andocarea (lipirea de o margine a containerului). De asemenea, vom trata, în afară de evenimentul Click, și evenimentele MouseEnter (intrarea mous-ului pe suprafața butonului) și MouseLeave (ieșirea mou-sului de pe suprafața  butonului).

Atașăm 3 butoane, unul în panoul din stânga, două în panoul din dreapta, unul sub altul. 
Tratăm evenimentul Click al butonului 1. Dorim ca în mod alternativ să andocăm și să dez-andocăm butonul, simultan să-i schimbăm textul afișat.

        private void button1_Click(object sender, EventArgs e)
        {
            //Daca butonul este andocat umple panoul
            if (button1.Dock==DockStyle.Fill)
            {
                //il readucem la forma si eticheta initiale
                button1.Dock = DockStyle.None;
            }
            else
            {
                //il andocam si schimbam eticheta
                button1.Dock = DockStyle.Fill;
                button1.Text = "Fill!!";
            }

        }

Selectăm Button2 și din panoul Properties setăm proprietatea BackColor la valoarea Red siproprietatea Text la valoarea Roșu. tot din Properties selectăm evenimentul MouseEnter și introducem codul care urează:

        private void button2_MouseEnter(object sender, EventArgs e)
        {
            //setam fundalul la culoarea galbena
            button2.BackColor = Color.Yellow;
            button2.Text = "Galben";

        }


Similar,  tratăm evenimentul MouseLeave:

        private void button2_MouseLeave(object sender, EventArgs e)
        {
            //resetm culoarea fundalului si textul
            button2.BackColor = Color.Red;
            button2.Text = "Rosu";

        }

Introducem o comandă de exit aplicație pe evenimentuul Click al butonului 3:

         private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

Lansăm în execuție.

LinkLabel


Atașăm în panoul din dreapta două controale de tipul LinkLabel. Schimbăm proprietatea Text a lui LinkLabel1 la valoarea Vizitati www.yahoo.com iar a lui LinkLabel2 in Lansati Notepad.

Selectăm  eticheta LinkLabel1 și din Properties expandăm nodul LinkArea și setăm proprietatea start la  valoarea 9, ceea ce înseamnă că link-ul începe după al 9-lea caracter al proprietății Text.


Tratăm evenimentul Click al lui LinkLabel1 în felul următor:

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            //schimba  culoarea link-ului dupa click
            linkLabel1.LinkVisited = true;
            //schimba textul in controlul Label
            linkLabel1.Text = "Se viziteaza www.yahoo.com";
            //se deschide un URL cu browserul implicit
            System.Diagnostics.Process.Start("http://www.yahoo.com");

        }

Similar, evenimentul Click pentru Linklabel2:

        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            linkLabel2.LinkVisited = true;
            linkLabel2.Text = "S-a lansat Notepad";
            //lanseaza Notepad
            System.Diagnostics.Process.Start("notepad");

        }

Ambele etichete folosesc metoda Process.Start pentru a lansa o aplicație într-o fereastră nouă (broeserul implicit și Notepad).

Rulăm aplicația, care arată așa:

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

        private void button1_Click(object sender, EventArgs e)
        {
            //Daca butonul este andocat umple panoul
            if (button1.Dock==DockStyle.Fill)
            {
                //il readucem la forma si eticheta initiale
                button1.Dock = DockStyle.None;
            }
            else
            {
                //il andocam si schimbam eticheta
                button1.Dock = DockStyle.Fill;
                button1.Text = "Fill!!";
            }
        }

        private void button3_MouseEnter(object sender, EventArgs e)
        {
            //setam fundalul la culoarea galbena
            button2.BackColor = Color.Yellow;
            button2.Text = "Galben";
        }

        private void button2_MouseLeave(object sender, EventArgs e)
        {
            //resetm culoarea fundalului si textul
            button2.BackColor = Color.Red;
            button2.Text = "Rosu";
        }

        private void button2_MouseEnter(object sender, EventArgs e)
        {
            //setam fundalul la culoarea galbena
            button2.BackColor = Color.Yellow;
            button2.Text = "Galben";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            //schimba  culoarea link-ului dupa click
            linkLabel1.LinkVisited = true;
            //schimba textul in controlul Label
            linkLabel1.Text = "Se viziteaza www.yahoo.com";
            //se deschide un URL cu browserul implicit
            System.Diagnostics.Process.Start("http://www.yahoo.com");
        }

        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            linkLabel2.LinkVisited = true;
            linkLabel2.Text = "S-a lansat Notepad";
            //lanseaza Notepad
            System.Diagnostics.Process.Start("notepad");
        }
    }
}

Niciun comentariu:

Trimiteți un comentariu