miercuri, 8 iunie 2016

C#25 Progress bar, Timer

Progress Bar

 Acesta este un control care afișează progresul unei activități lente sub forma unei bare orizontale. Proprietatea Value reprezintă progresul activității și parcurge în timp plaja de valori dintre Minimum și Maximum cu pasul Step.  Minimum, maximum și step se vor configura la design time din panoul proprietăți.  Efectuarea unui pas este dată de execuția metodei PerformStep() ca în acest exemplu:

for(int i=p.Minimum; i=p.Maximum; i+=p.Step)
{
      p.PerformStep();
}

unde p este un obiect progressBar.

Timer

 Acesta este un cronometru care emite evenimente de tip Tick la intervale programabile, multiplu de 1 milisecundă.


Aplicația

Utilizează un control  Timer care declanșează un eveniment Tick la fiecare 2 secunde, timp de  20 de secunde. Numărul de secunde scurse se afișează într-un control Label, iar progresul se vizualizează într-o bară de progres. Cronometrul se oprește după 20 de secunde și poate fi repornit cu butonul Start.  Acest Timer îl vom denumi winTimer.
Al doilea control Timer afișează ora curentă.  Îl vom denumi SystemTimer. Vom seta din proprietăți proprietatea Enabled pe true (implicit pleacă dezactivat).
Ambele Timere vor avea proprietatea Interval setată pe 1000 (un Tick la o secundă).
Utilizăm două etichete Label al căror text afișat (Text din Properties) îl ștergem. Va fi afișat prin program un text special.
 Aducem un buton pe care scriem Start și pe care îl programăm cu metoda Click din aplicația următoare.
Aducem în formă un progressBar pe care îl configurăm astfel: Maximum = 20, Step = 2.
Mai creăm o variabilă membru în clasa Form1 numită time, de tip întreg, care va contoriza impulsurile de la 0 la 20, apoi  va fi resetată:

private int time = 0;


namespace Timer
{
    public partial class Form1 : Form
    {
        private int time = 0;
        public Form1()
        {
            InitializeComponent();

        }

        private void progressBar1_Click(object sender, EventArgs e)
        {

        }

        private void winTimer_Tick(object sender, EventArgs e)
        {
            time += 2; //incrementeaza contorul  la 2 secunde
            // afisam contorul secundelor (cronometrul)  in eticheta
            label2.Text = string.Format("{0}",time);
            //incrementarea barei de progres
            progressBar1.PerformStep();
            if(time==20) //daca s-au scurs 20 secunde cronometrul se opreste
            {
                winTimer.Stop();
                progressBar1.Enabled = false; //oprim
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            winTimer.Enabled = true;
            if(time==20)
            {
                time = 0;
                progressBar1.Value = 0;
            }
        }

        private void SystemTimer_Tick(object sender, EventArgs e)
        {
            //proprietatea Now a clasei dateTime returneaza ora exacta
            label5.Text = System.DateTime.Now.ToLongTimeString();
        }
    }
}

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; } }
    }
}

marți, 12 aprilie 2016

C#21 Meniu contextual. Hide & Show, Notify Icon

Meniul contextual se afișează la click cu  butonul din dreapta al mous-ului. Controlul folosit pentru acest tip de meniu este ContextMenuStrip.

Notify Icon este un icon care este plasat  pe System Tray în zona de notificare, în partea dreaptă, lângă ceas. Vom pune un buton de minimizare pe formă, al cărui efect este ascunderea (Hide) formei. Reafișarea (show) o vom realiza făcând dublu click pe iconul de notificare, sau, alternativ, apelând meniul contextual atașat acestui icon.


Aplicația

Vom extinde  una din aplicațiile  făcute anterior, sau vom crea o aplicație nouă, după dorință. Aducem pe formă următoarele controale: un ContextMenuStrip, un Button și un NotifyIcon. Căutăm pe internet un fișier de tip ico și îl descărcăm. Asociem acest fișier cu obiectul NotifyIcon, prin intermediul panoului Proprietăți. Selectăm referința meniului contextual (aceasta se află în subsolul ferestrei de design al formei) și creăm doi itemi: Hide și Show. Selectăm butonul Button1 și setăm textul afișat Hide sau Ascunde. Evenimentele click ale butonului Hide și al itemului Hide de pe ContextMenu  conțin doar instrucțiunea

                                  this.Hide();

Evenimentul click al itemului Show, precum si evenimentul dublu click al lui NotifyIcon1 contin instructiunea

                                   this.Visible=true;

Codul introdus este urmatorul:


         private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
        }

        private void hideToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
        }

        private void showToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Visible = true;
        }

        private void notifyIcon1_DoubleClick(object sender, EventArgs e)
        {
            this.Visible = true;
        }



Compilăm și lansăm în execuție.

duminică, 3 aprilie 2016

C#20 RichTextBox, ToolStrip

Controlul ToolStrip 

Acest control implementează o bară de instrumente formată din mai multe butoane, butoane drop-down, comboBox-uri, liste derulante, etichete. Caracteristic acestor bare de instrumente  este faptul că au afișată pe suprafața instrumentelor (butoanelor) lor o imagine sugestivă (care la origine este un fișier de tip JPG sau GIF oarecare), scalată automat de  sistem la dimensiunea butonului, și un text auxiliar care se afișează la staționarea timp de 1 - 2 secunde a mous-ului pe sprafața butonului. Aceste butoane dublează funcțiile meniului, de aceea codul pentru evenimentul Click este același ca cel al itemului corespunzător de meniu.


Controlul RichTextBox


Acest control preia toate caracteristicile lui TextBox, și în plus oferă posibilitatea de formatare a textului (italic, bold, underline, culoare, dimensiune, font, paragraf). Caracteristic butonului este faptul că prin andocare la fereastra părinte își maximizează suprafața de lucru. Conținutul său poate fi introdus din  tastatură sau copiat dintr-un fișier RTF.

Aplicația Editor de fișiere RTF


Deschidem o aplicatie nouă, pe care o numim RichTextBoxApp. Aducem pe forma Form1 un MenuStrip, un ToolStrip, și câte un dialog din cele studiate în lecția trecută (openFile, saveFile, font și color).

Expandăm meniul la fel ca în lecția precedentă (File -Nou -Open -Save -Exit și respectiv Format-Font  - Color).

În plus, putem adăuga un nou meniu, Edit, cu itemii Copy, Cut, Paste. Modul în care putem utiliza aceste funcții îl găsim în help-ul contextual  Microsoft Visual Studio. Îndată ce  scriem în editorul de cod numele obiectului richTextBox1 și punct, sistemul ne afișează list derulantă a metodelor disponibile.

Expandăm controlul ToolStrip și generăm atâtea butoane câte ne trebuie pentru implementarea itemilor din meniu, adică 5: nou, open, save, font și color).

Căutăm în calculator sau pe internet imagini sugestive pentru asociat cu bara de instrumente. Asocierea se face prin click dreapta pe buton, apoi Set  image...

Setăm textul auxiliar care se afișează la staționarea mous-ului pe instrumente, prin setarea corespunzătoare a proprietatii Text a fiecărui instrument, din  panoul Proprietăți.

Creăm metodele handler pentru evenimentul Click al fiecărui item de meniu, apoi copiem identic în instrumentul corespunzător. Operațiile de deschidere și închidere de fișier se fac cu ajutorul metodelor loadFile, respectiv SaveFile ale controlului richTextBox1, metode care primesc ca argument numele fișierului returnat de dialogul aferent, astfel:

               //deschide fisierul cu metoda LoadFile
       richTextBox1.LoadFile(openFileDialog1.FileName);



              //salvare fisier cu extensia .rtf
         richTextBox1.SaveFile(saveFileDialog1.FileName,  RichTextBoxStreamType.RichText);



                //portiunea selectata din text preia caracteristicile alese de utilizator
          richTextBox1.SelectionFont = fontDialog1.Font; 


                  //cod care actualizeaza culorile in document
           richTextBox1.SelectionColor = colorDialog1.Color;


Aplicația completă este următoarea:

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

        private void nouToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //sterge textul controlului
            richTextBox1.Text = "";
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            //sterge textul controlului
            richTextBox1.Text = "";
        }

        private void deschideToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            openFileDialog1.Title = "Deschide fisier";
            // seteaza tipurille de fisier
            openFileDialog1.Filter = "Fisiere text |*.txt| fisiere rtf|*.rtf";
            //in comboBox-ul File name nu vrem sa apara la deschiderea dialogului nici un nume
            openFileDialog1.FileName = "";
            //directorul care se deschide in mod implicit
            openFileDialog1.InitialDirectory = "MyDocuments";
            //atentionare daca numele nu exista
            openFileDialog1.CheckFileExists = true;
            //deschide dialogul OpennFileDialog
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //deschide fisierul cu metoda LoadFile
                richTextBox1.LoadFile(openFileDialog1.FileName);
            }
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            openFileDialog1.Title = "Deschide fisier";
            // seteaza tipurille de fisier
            openFileDialog1.Filter = "Fisiere text |*.txt| fisiere rtf|*.rtf";
            //in comboBox-ul File name nu vrem sa apara la deschiderea dialogului nici un nume
            openFileDialog1.FileName = "";
            //directorul care se deschide in mod implicit
            openFileDialog1.InitialDirectory = "MyDocuments";
            //atentionare daca numele nu exista
            openFileDialog1.CheckFileExists = true;
            //deschide dialogul OpennFileDialog
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //deschide fisierul cu metoda LoadFile
                richTextBox1.LoadFile(openFileDialog1.FileName);
            }
        }

        private void salvezaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            saveFileDialog1.Title = "salveaza fisierul";
            //extensia implicita de salvare
            saveFileDialog1.DefaultExt = ".rtf";
            //atentionare de suprascriere
            saveFileDialog1.OverwritePrompt = true;
            //deschide dialogul de salvare fisier
            if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //salvare fisier cu extensia .rtf
                richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.RichText);
            }
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            saveFileDialog1.Title = "salveaza fisierul";
            //extensia implicita de salvare
            saveFileDialog1.DefaultExt = ".rtf";
            //atentionare de suprascriere
            saveFileDialog1.OverwritePrompt = true;
            //deschide dialogul de salvare fisier
            if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //salvare fisier cu extensia .rtf
                richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.RichText);
            }
        }

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

        private void fontToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // se deschide dialogul font
            if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //portiunea selectata din text preia caracteristicile alese de utilizator
                richTextBox1.SelectionFont = fontDialog1.Font;
            }
        }

        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            {
                // se deschide dialogul font
                if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                { //portiunea selectata din text preia caracteristicile alese de utilizator
                    richTextBox1.SelectionFont = fontDialog1.Font;
                }
            }
        }

        private void culoareToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //deschide dialogul ColorDialog
            if (colorDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //cod care actualizeaza culorile in document
                richTextBox1.SelectionColor = colorDialog1.Color;
            }
        }

        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            //deschide dialogul ColorDialog
            if (colorDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //cod care actualizeaza culorile in document
                richTextBox1.SelectionColor = colorDialog1.Color;
            }
        }
    }
}

 

sâmbătă, 26 martie 2016

C#19 Menu, dialoguri predefinite

Dialogurile predefinite sunt forme standardizate de dialog,  incorporate in .NET, care pot fi inglobate in aplicatia noastra. Exemple de dialoguri predefinite sunt dialogul OpenFile, SaveFile, FontColor, PrintDialog, etc. Ele vor functiona in applicatia noastra in exact aceeasi maniera ca si in Word sau Paint, de exemplu.

Vom face o aplicatie care utilizeaza un meniu si cateva dialoguri predefinite, prilej cu care vom lucra cu cateva dintre  metodele si proprietatile membru ale acestor controale.  Celelalte metode si proprietati se pot descoperi cu ajutorul help-ului mediului de programare.
Deschidem un proiect nou, pe care il denumim DialoguriPredefinite. Tragem pe suprafata formei Form1 un control de tipul MenuStrip. Facand click pe suprafata acestui control, el se expandeaza in jos si la dreapta, creand poziti pentru noi itemi. Vom crea doua meniuri  pe bara de meniu: Fisier si Format. Sub meniul Fisier vom crea alti  trei itemi: Deschide, Salveaza  si Iesire.  Sub meniul Format cream itemul Font si itemul Color. Vom crea pentru fiecare item in parte dialogul aferent,  insa nu vom executa efectiv si operatiile de deschidere si salvare de fisier.

Adăugăm formei dialogurile predefinite, prin drag&drop de la panoul Toolbox către suprafața formei. Observăm că dialogurile trase nu sunt localizate vizual pe suprafața formei, dar ele sunt înglobate. Sunt create obiectele aferente, cu numere de ordine începând cu 1. Vom avea astfel un obiect openFileDialog1, care are proprietăți ca Title, Filter, etc, a căror utilizare se va vedea mai jos.

Pentru tratarea evenimentului Click asupra unui item de meniu, facem dublu click pe acel item.

Meniul Deschide fisier

Introducem acest cod in handlerul evenimentului click:

        private void deschideToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            openFileDialog1.Title = "Deschide fisier";
            // seteaza tipurille de fisier
            openFileDialog1.Filter = "Fisiere text |*.txt| fisiere doc|*.doc|fisiere docx |*.docx";
            //in comboBox-ul File name nu vrem sa apara la deschiderea dialogului nici un nume
            openFileDialog1.FileName = "";
            //directorul care se deschide in mod implicit
            openFileDialog1.InitialDirectory = "MyDocuments";
            //atentionare daca numele nu exista
            openFileDialog1.CheckFileExists = true;
            //deschide dialogul OpennFileDialog
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //cod care deschide fisierul
            }
        }


Filtrul pentru deschiderea fisierului are  sintaxa urmatoare: explicatie | filtru |explicatie | filtru ...etc.

In mod asemanator, introducem handlerele petru click in celelalte optiuni ale meniului.
Aplicatia va arata in felul urmator:

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

        private void deschideToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            openFileDialog1.Title = "Deschide fisier";
            // seteaza tipurille de fisier
            openFileDialog1.Filter = "Fisiere text |*.txt| fisiere doc|*.doc|fisiere docx |*.docx";
            //in comboBox-ul File name nu vrem sa apara la deschiderea dialogului nici un nume
            openFileDialog1.FileName = "";
            //directorul care se deschide in mod implicit
            openFileDialog1.InitialDirectory = "Desktop";
            //atentionare daca numele nu exista
            openFileDialog1.CheckFileExists = true;
            //deschide dialogul OpennFileDialog
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //cod care deschide fisierul
            }
        }


        private void salveazăCaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            saveFileDialog1.Title = "salveaza fisierul";
            //extensia implicita de salvare
            saveFileDialog1.DefaultExt = ".txt";
            //atentionare de suprascriere
            saveFileDialog1.OverwritePrompt = true;
            //deschide dialogul de salvare fisier
            if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //cod care salveaza fisierul
            }
        }


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

        private void fontToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // se deschide dialogul font
            if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //cod care reafiseaza documentul cu fontul ales de utilizator
            }
        }
        private void culoriToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //deschide dialogul ColorDialog
            if(colorDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK)
            {
                //cod care actualizeaza culorile in document
            }
        }
    }
}