duminică, 29 mai 2016

C#24 Transparency & Opacity, TrackBar, NumericUpDown, DomainUpDown


 Plasăm în fereastra aplicației controalele: NumericUpDown, DomainUpDown și TrackBar, a căror funcționalitate va reieși clar din aplicația următoare. Mai punem un buton pe care scriem revenire.

În esență, acestea sunt controale prin care putem trimite un input dintr-o gamă sau plajă restrânsă de itemi sau valori. Vom regla cu ajutorul lor opacitatea / transparența ferestrei aplicației, într-o gamă de la 100% (opac) la 0% (total transparent).

Introducem itemii lui DomainUpDown prin panoul Proprietăți, proprietatea Items. Introducem 5 itemi, cu valorile Opacitate 0%, Opacitate 25%, Opacitate 50%, Opacitate 75% și Opacitate 100%. Tot aici setăm proprietatea Text la valoarea Opacitate 100%.

Modificăm proprietatea Maximum a lui NumericUpDown la valoarea 5 (implicit este 100).

Scriem evenimentul Click al butonului revenire.

În timpul rulării vom evita opacitatea 0% deoarece butoanele de închidere a aplicației nu mai sunt accesibile.


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 Opacity
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            this.Opacity = 1 - (double)trackBar1.Value / 10;
        }

        private void domainUpDown1_SelectedItemChanged(object sender, EventArgs e)
        {
            this.Opacity = 1 - (double)domainUpDown1.SelectedIndex / 5;
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            this.Opacity = 1 - (double)numericUpDown1.Value / 5;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Opacity = 1;
            trackBar1.Value = 0;
            numericUpDown1.Value = 0;
            domainUpDown1.Text = "Opacitate 100%";
        }
    }
}

sâmbătă, 21 mai 2016

C#23 Fonturi

Fonturi

Fonturile nu sunt controale ci obiecte ale clasei Font definită în spațiul de nume System.Drawing. Un obiect de tip Font încapsulează un format particular de caracter (exemplu: arial, TimesNewRoman, etc), stilul (bold, italic, underline, normal) și mărimea.
Toate controalele de bază au proprietatea Font, prin care se permite setarea forma literelor afisate pe control la designtime. De exemplu, setarea fontului unei etichete label la designtime se face așa:

e.Font = new Font ("Arial", 10, FontStyle.Italic);

Stilurile fonturilor

FontStyle este o enumerare (un set de constante numerice cu nume simbolice) definită în spațiul de nume System.Drawing. Membrii enumerării sunt Regular, Bold, Italic, Underline și Strikeout.

O porțiune de text poate avea un cumul  de mai multe stiluri. Acest efect se realizează simplu, prin operații de tip ȘI și SAU  logic pe biți între două sau mai multe stiluri.

Aplicația FontStyle

- deschidem o aplicație nouă, în care folosim un control RichTextBox și un control ToolStrip.
- Din ToolStrip generăm 3 butoane.
- Modificăm proprietatea DysplayStyle a butoanelor la valoarea Text, ceea ce ne permite să scriem un text pe butoane.
- Vom atribui proprietăților Text valorile e Bold, Italic și Underline.
-Facem dublu click pe RichTextBox, ceea ce va genera metoda textChanged, care rămâne vidă.
-Andocăm  richtextBoxul.
-scriem metoda click pentru fiecare din cele 3 butoane. Pentru butonul Bold:

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Font vechiulFont, noulFont;
            //returneaza fontul folosit in textul selectat
            vechiulFont = richTextBox1.SelectionFont;
            //daca vechiul font avea stilul bold, inlatura
            if(vechiulFont.Bold)
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style & ~System.Drawing.FontStyle.Bold);
            }
            else
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style | System.Drawing.FontStyle.Bold);
            }
            //inseram noul font si redam focusul controlului RichTextBox
            richTextBox1.SelectionFont = noulFont;
            richTextBox1.Focus();
        }


Codul pentru butoanele italic și Underline se obține prin copiere, cu modificarea lui Bold cu italic, respectiv Underline.

Se observă folosirea operatorului ȘI logic pe biți & și a lui SAU logic pe biți |, precum și a negației pe biți ~.

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

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Font vechiulFont, noulFont;
            //returneaza fontul folosit in textul selectat
            vechiulFont = richTextBox1.SelectionFont;
            //daca vechiul font avea stilul bold, inlatura
            if(vechiulFont.Bold)
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style & ~System.Drawing.FontStyle.Bold);
            }
            else
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style | System.Drawing.FontStyle.Bold);
            }
            //inseram noul font si redam focusul controlului RichTextBox
            richTextBox1.SelectionFont = noulFont;
            richTextBox1.Focus();
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            Font vechiulFont, noulFont;
            //returneaza fontul folosit in textul selectat
            vechiulFont = richTextBox1.SelectionFont;
            //daca vechiul font avea stilul bold, inlatura
            if (vechiulFont.Italic)
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style & ~System.Drawing.FontStyle.Italic);
            }
            else
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style | System.Drawing.FontStyle.Italic);
            }
            //inseram noul font si redam focusul controlului RichTextBox
            richTextBox1.SelectionFont = noulFont;
            richTextBox1.Focus();
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            Font vechiulFont, noulFont;
            //returneaza fontul folosit in textul selectat
            vechiulFont = richTextBox1.SelectionFont;
            //daca vechiul font avea stilul bold, inlatura
            if (vechiulFont.Underline)
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style & ~System.Drawing.FontStyle.Underline);
            }
            else
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style | System.Drawing.FontStyle.Underline);
            }
            //inseram noul font si redam focusul controlului RichTextBox
            richTextBox1.SelectionFont = noulFont;
            richTextBox1.Focus();
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}




joi, 5 mai 2016

C#22 Controalele ListBox și ComboBox

Aceste controale afișează o listă de itemi. Itemii apar sub formă de șiruri de caractere și pot fi selectați cu mousul. Controlul comboBox combină un TextBox cu un ListBox, permițând atât selecția de itemi cât și introducerea de noi itemi.
Controlul ChechedListBox este un listBox care are în plus checkboxuri pentru selectarea itemilor nealăturați.
Itemii se pot adăuga în liste atât la design time cât și la run time.
Aplicația care urmează implementează toate cele trei tipuri de liste și ambele modalități de adaugare a itemilor.

Aplicația TestListBox

Se deschide o aplicație nouă și se aduc pe suprafața formei următoarele controale: un listBox, un comboBox, un checkedListBox și un button pentru Exit. Se aranjează aceste controale unul lângă altul, în linie sau în coloană.
Lângă aceste controale se mai aduc câteva butoane, astfel: lângă listBox și lângă comboBox,  câte un buton, iar lângă checkedListBox două butoane.

Se configurează textul afișat pe aceste butoane, după cum urmează:
butonul alăturat lui listBox: Încarcă ListBox
butonul alăturat lui ComboBox: Incarca comboBox
primul buton de lânga checkedBox; Incarca o lista
al doilea buton de langa checkedBox: Incarca alta lista

Se tratează evenimentele click ale tuturor butoanelor.

Din săgeata mică din marginea superioară a listBox-ului se alege Edit Items. Se introduc 3 siruri de caractere pe 3 linii succesive, de genul

Gogu
Gigi
Guță

Acești itemi sunt prestabiliți la design-time.

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        private Elev[] el;

        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)

        {
            listBox1.Items.Add("Gogu"); //adăugare item singur
            listBox1.Items.AddRange(new object[] { "UNU", "DOI", "TREI",  }); //adăugare  multiplă
        }

        private void button2_Click(object sender, EventArgs e)

        {
            //incepand cu apelul BeginUpdate si pana la EndUpdate
            //controlul nu se mai redeseneaza, ceea ce mareste viteza
            comboBox1.BeginUpdate();
            for (int i = 0; i < 20; i++)
                comboBox1.Items.Add("Itemul " + i);
            comboBox1.EndUpdate();
        }

        private void button3_Click(object sender, EventArgs e)

        {
            //un tablou de referinte la obiecte de tip string
            string[] copii = { "Ionel", "Viorel", "Alinel", "Dorel" };
            //sursa de date este tabloul
            this.checkedListBox1.DataSource = copii;
        }

        private void button4_Click(object sender, EventArgs e)

        {
            //cream obiectele care se insereaza in lista
            Elev[] e1 = new Elev[] { new Elev("Marius"), new Elev("Lenuta") };
            //sursa de date este e1
            this.checkedListBox1.DataSource = e1;
            //membrul  clasei Elev care se va afisa in lista
            //este proprietatea Nume
            checkedListBox1.DisplayMember = "Nume";
        }

        private void button5_Click(object sender, EventArgs e)

        {
            Application.Exit();
        }
    }
    class Elev
    {
        private string nume;
        public Elev(string n)
        { nume = n; }
        public string Nume
        { get { return nume; } }
    }
}