pv 5 c# · vom adauga pe forma un control checkedlistbox care va contine sapte casete de validare...

18
1 Metoda Dispose() Exemplu: Metoda Dispose() are ca efect inchiderea formei curente si dealocarea ei din memorie. Vom crea o aplicatie care la apasarea unui buton va prelua textul introdus intr-o caseta de text si il va afisa intr-o caseta de mesaje. Apasarea celui de-al doilea buton va inchide forma si, in acest caz, aplicatia. Creati un proiect Windows Forms cu numele MetodaDispose Pentru forma care se deschide setati urmatoarele proprietati: o (Name): mainForm o BackColor: PapayaWhip (tabul Web) o Font: Microsoft Sans Serif 8 Bold o ForeColor: DarkRed (tabul Web) o FormBorderStyle: FixedDialog o MaximizeBox: False o MinimizeBox: False o Size: 350, 215 o Text: Metoda Dispose() Adaugati pe forma un control Label si setati urmatoarele proprietati: o (Name): inputLabel o Location: 70, 13 o Text: Introduceti un text n caseta Adaugati pe forma un control TextBox si setati urmatoarele proprietati: o (Name): inputTextBox o ForeColor: DarkRed o Location: 165 35 o Size: 160 20 Adaugati pe forma doua controale Button si setati in ordine urmatoarele proprietati: o (Name): inputButton , exitButton o Locaton: 70, 90; 70, 140 o Size: 120, 23 o Text: Afiseaza textul; Inchide forma Faceti dublu-clic pe primul buton si in administratorul care se deschide scrieti codul in rosu: private void inputButton_Click(object sender, EventArgs e) { //textul introdus in caseta de text va fi afisat in caseta de mesaje MessageBox.Show("Ati introdus textul '" + inputTextBox.Text + "'", "Rezultatul operatiei", MessageBoxButtons.OK, MessageBoxIcon.Information); } Faceti dublu-clic pe al doilea buton si in administratorul de evenimente scrieti codul in rosu: private void exitButton_Click(object sender, EventArgs e) { mainForm.ActiveForm.Dispose(); //inchide si dealoca forma }

Upload: others

Post on 17-Feb-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

1

Metoda Dispose() Exemplu: Metoda Dispose() are ca efect inchiderea formei curente si dealocarea ei din memorie. Vom crea o aplicatie care la apasarea unui buton va prelua textul introdus intr-o caseta de text si il va afisa intr-o caseta de mesaje. Apasarea celui de-al doilea buton va inchide forma si, in acest caz, aplicatia.

Creati un proiect Windows Forms cu numele MetodaDispose Pentru forma care se deschide setati urmatoarele proprietati:

o (Name): mainForm o BackColor: PapayaWhip (tabul Web) o Font: Microsoft Sans Serif 8 Bold o ForeColor: DarkRed (tabul Web) o FormBorderStyle: FixedDialog o MaximizeBox: False o MinimizeBox: False o Size: 350, 215 o Text: Metoda Dispose()

Adaugati pe forma un control Label si setati urmatoarele proprietati: o (Name): inputLabel o Location: 70, 13 o Text: Introduceti un text n caseta

Adaugati pe forma un control TextBox si setati urmatoarele proprietati: o (Name): inputTextBox o ForeColor: DarkRed o Location: 165 35 o Size: 160 20

Adaugati pe forma doua controale Button si setati in ordine urmatoarele proprietati: o (Name): inputButton , exitButton o Locaton: 70, 90; 70, 140 o Size: 120, 23 o Text: Afiseaza textul; Inchide forma

Faceti dublu-clic pe primul buton si in administratorul care se deschide scrieti codul in rosu: private void inputButton_Click(object sender, EventArgs e) { //textul introdus in caseta de text va fi afisat in caseta de mesaje MessageBox.Show("Ati introdus textul '" + inputTextBox.Text + "'", "Rezultatul operatiei", MessageBoxButtons.OK, MessageBoxIcon.Information); }

Faceti dublu-clic pe al doilea buton si in administratorul de evenimente scrieti codul in rosu: private void exitButton_Click(object sender, EventArgs e) { mainForm.ActiveForm.Dispose(); //inchide si dealoca forma }

Page 2: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

2

Metodele Clear() şi Add() Exemplu: In acest exemplu vom un utiliza controale pentru selectie si selectie multipla si anume CheckedListBox care contine mai multe casete de validare si ListBox care afiseaza ma multi itemi. Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un control ListBox si intr-o eticheta Label.

Creati un proiect Windows Forms cu numele ControaleSelectieMultipla Pentru forma care se deschide setati urmatoarele proprietati:

o (Name): mainForm o BackColor: Gainsboro (tabul Web) o Font: Microsoft Sans Serif 8 Bold o ForeColor: Indigo (tabul Web) o FormBorderStyle: FixedDialog o MaximizeBox: False o MinimizeBox: False o Size: 560, 245 o Text: Utilizarea controalelor de selectie multipla

Adaugati pe forma un control CheckedListBox si setati urmatoarele proprietati: o (Name): inputCheckedListBox o CheckOnClick: True (caseta este bifata cand facem clic pe ea) o ForeColor: Indigo o Location: 30, 35 o Size: 140 110

In fereastra Properties faceti clic pe proprietatea Items si apoi pe caseta cu trei puncte din dreapta pentru a edita itemi care vor fi afisati in CkeckedListBox. In fereastra de editare care se deschide introduceti zilele saptamanii ca in figura urmatoare:

Page 3: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

3

Adaugati pe forma un control ListBox si setati urmatoarele proprietati:

o (Name): outputListBox o ForeColor: Indigo o Location: 380, 35 o Size: 140, 110

Adaugati pe forma un control Button si setati urmatoarele proprietati: o (Name): selectionButton o Location: 230, 75 o Size: 100, 30 o Text: Selecteaza

Adaugati pe forma un control Label si setati urmatoarele proprietati: o (Name): outputLabel o Location: 30, 180 o Text:

Faceti dublu-clic pe buton si in administrator scrieti codul in rosu: private void selectionButton_Click(object sender, EventArgs e) { String s = "Am selectat si am adaugat itemii: "; //stergem itemi afsati in listBox outputListBox.Items.Clear(); foreach (object c in inputCheckedListBox.CheckedItems) //pentru fiecare item selectat in CheckedListBox { outputListBox.Items.Add(c); //se adauga itemul la ListBox pentru a fi afisat s += c.ToString()+" "; //se adauga itemul selectat in stringul s } outputLabel.Text = s; //stringul este afisat in eticheta //pentru fiecare indice selectat in CheckedListBox foreach (int c in inputCheckedListBox.CheckedIndices) inputCheckedListBox.SetItemChecked(c, false); //itemul respectiv este debifat/deselectat }

Page 4: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

4

Observatie: itemii dintr-un control CheckedListBox au asociati indici incepand cu 0, adica primul item are indicele zero, al doilea indicele 1 etc. Metoda CheckedIndices returneaza o colectie formata din indicii itemilor care au fost selectati (bifati) in CheckedListBox. Metoda SetItemChecked seteaza un item care are indicele c (primul parametru) la valoarea True (bifat) sau False (debifat). Itemii dintr-un ListBox sunt deasemenea indexati de la 0.

Exemplu: este un exemplu de utilizare a controlului ListView. ListView este folosit pentru a afişa o colecţie de elemente în unul din cele 4 moduri (Text, Text+Imagini mici, Imagini mari, Detalii). Acesta este similar grafic cu ferestrele în care se afişează fişierele dintr-un anumit director din Windows Explorer. Fiind un control complex, conţine foarte multe proprietăţi, printre care:

View ( selectează modul de afişare (LargeIcon, SmallIcon, Details, List)), LargeImageList, SmallImageList (icon-urile de afişat în modurile LargeIcon, SmallIcon), Columns (utilizat doar în modul Details, pentru a defini coloanele de afişat), Items (elementele

de afişat). Exemplul acesta afisează într-un ListView o listă de elevi. Proiectul contine clasa Elev care este inzestrata cu proprietatile Nume, Prenume si Nota si cu metoda statică CitesteElevi() care returnează o listă de elevi (ne putem imagina că lista respectivă e citită din baza de date). Metoda SeteazaLista pregăteste lista pentru datele care îi vor fi servite: mai întăi îi adaugă 3 coloane, iar apoi setează proprietăti care tin de modul de afisare al acesteia. La incarcarea formei (evenimentul implicit Load) se vor lega datele (lista de elevi) de controlul de interfată.

Creati un proiect Windows Forms cu numele UtilizareListView Pentru forma care se deschide setati urmatoarele proprietati:

o (Name): mainForm o AutoScroll: True o Font: Bold o FormBorderStyle: FixedDialog o MaximizeBox: False o Minimize: False o Size: 550, 240

Page 5: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

5

o Text: Utilizarea controlului ListView Trageti pe forma un control ListView si setati urmatoarele proprietati:

o (Name): eleviListView o BackColor: OldLace (tabul Web) o Dock : Fill (controlul va umple tot spatiul formei)

Alegeti din meniu ViewCode sau apasati tasta F7 si adaugati codul metodei SeteazaLista() care stabileste optiunile de afisare pentru controlul ListView

public partial class mainForm : Form { public mainForm() { InitializeComponent(); } private void SeteazaLista() { //adauga cele trei coloane cu titlu, latime si aliniere orizontala eleviListView.Columns.Add("Nume", 200, HorizontalAlignment.Left); eleviListView.Columns.Add("Prenume", 200, HorizontalAlignment.Left); eleviListView.Columns.Add("Nota", 200, HorizontalAlignment.Left); //modul de vizualizare este Detalii eleviListView.View = View.Details; //informatiile din lista sunt sortate alfabetic eleviListView.Sorting = SortOrder.Ascending; eleviListView.AllowColumnReorder = true; }

Alegeti din meniu ProjectAdd Class pentru a aduga proiectului o clasa si in fereastra de dialog care se deschide numiti clasa Elev.cs.

In clasa creata scrieti urmatorul cod: class Elev { //se declara trei proprietati pentru a obtine sau seta numele, prenumele si //nota unui elev din lista public string Nume { get; set; } public string Prenume { get; set; } public int Nota { get; set; } //aceasta metoda va returna o lista cu informatiile despre elevi public static List<Elev> CitesteElevi() { //se creeeaza o lista cu elemente de tip Elev List<Elev> elevi = new List<Elev>(); //lista este populata cu patru obiecte de tip Elev //Informatiile despre elevi se seteaza cu ajutorul proprietatilor //Nume, Prenume si Nota declarate anterior elevi.Add(new Elev() { Nume = "Popescu", Prenume = "Daniel", Nota = 9 }); elevi.Add(new Elev() { Nume= "Danila", Prenume="Elena", Nota=10}); elevi.Add(new Elev() { Nume="Pavel", Prenume="Dan", Nota=8}); elevi.Add(new Elev() { Nume = "Ciornei", Prenume = "Andrei", Nota = 7 });

Page 6: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

6

//dupa creare si populare, lista este returnata de catre metoda return elevi; } }

Faceti dublu-clic pe forma mainForm pentru a deschide administratorul Load (implicit pentru forme). In administrator scrieti codul in rosu:

private void mainForm_Load(object sender, EventArgs e) { //incepe actualizarea informatiilor din ListView this.eleviListView.BeginUpdate(); ListViewItem a; ListViewItem.ListViewSubItem b; //c este un obiect din multimea de elevi returnata de metoda //CitesteElevi() din clasa Elev foreach (Elev c in Elev.CitesteElevi()) { //se creeaza un nou item pentru controlul ListView a = new ListViewItem(); a.Text = c.Nume;

//numele elevului din obiectul c este memorat in proprietatea Text b = new ListViewItem.ListViewSubItem(); //se creeaza un subitem pentru controlul ListView b.Text = c.Prenume; //prenumele elevului este memorat in prprietatea Text a subitemului a.SubItems.Add(b); //se adauga prenumele la itemul a b = new ListViewItem.ListViewSubItem(); //se creeaza un nou subitem in care se memoreaza nota elevului b.Text = c.Nota.ToString(); //nota se adauga in itemul a a.SubItems.Add(b); //itemul a este complet si se adauga in controlul ListView eleviListView.Items.Add(a); } this.eleviListView.EndUpdate(); //s-a terminat actualizarea informatiilor din ListView SeteazaLista(); //apeleaza metoda care stabileste optiunile de afisare pentru ListView }

Page 7: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

7

Metoda Draw() Exemplu: Aplicaţia este un exemplu de utilizare a controlului ImageList. Acesta este un control care conţine o listă de imagini, care poate fi setată la design (proprietatea Images). Controlul ImageList dispune de o metodă Draw() care permite desenarea imaginilor pe care le conţine.

Creati un proiect Windows Forms cu numele UtilizareImageList Pentru forma care se deschide setati proprietatile:

o (Name): mainForm o Font: Bold o FormBorderStyle: Fixed3D o MaximizeBox: False o MinimizeBox: False o Size: 800, 300 o Text: Utilizarea controlului ImageList

Trageti pe forma un control Button si setati urmatoarele proprietati: o (Name): drawButton o AutoSize: True o Location: 38, 30 o Text: Deseneaza

Trageti pe forma un control ImageList (din sectiunea Components din Toolbox) si setati urmatoarele proprietati:

o (Name): myImageList o ImageSize: 150, 150 (dimensiunea de afisare a imaginilor din lista)

Faceti clic pe prprietatea Images si apoi pe caseta cu trei puncte din dreapta pentru a deschide selectorul de imagini. In fereastra care se deschde faceti clc pe butonul Add si incarcati cinci imagini. Cand ati terminat faceti clic pe butonul OK.

Faceti dublu-clic pe butonul Deseneaza si in administratorul care se deschide scrieti codul in

rosu:

Page 8: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

8

private void drawButton_Click(object sender, EventArgs e) { //creeaza pentru forma un obiect Graphics (desen) Graphics grafic = this.CreateGraphics(); //fiecare imagine din ImageList este desenata pe ecran cu metoda Draw() for (int i = 0; i < myImageList.Images.Count; i++) myImageList.Draw(grafic, i * 150+20, 80, i); grafic.Dispose(); }

Imaginile incarcate in ImageList sunt identificate prin numarul de ordine i (incepand de la 0) si sunt desenate pe ecran incepand din punctul de coordonate (i*150+20, 80) (orizontala, verticala). Reamintim ca pentru proprietatea ImageSize a controlului ImageList au fost setate valorile 150, 150 (dimensiunea une imagni).

Evenimentul DateSelected Exemplu: Controlul MonthCalendar afişează un calendar prin care se poate selecta o dată (zi, luna, an) în mod grafic. Proprietăţile mai importante sunt: MinDate, MaxDate, TodayDate ce reprezintă data minimă/maximă selectabilă şi data curentă (care apare afişată diferenţiat sau nu în funcţie de valorile proprietăţilor ShowToday,ShowTodayCircle. Există doua evenimente pe care controlul le expune: DateSelected şi DateChanged. În rutinele de tratare a acestor evenimente, programatorul are acces la un obiect de tipul DateRangeEventArgs care conţine proprietăţile Start şi End (reprezentând intervalul de timp selectat). Formularul din aplicaţie conţine un calendar pentru care putem selecta un interval de maximum 30 de zile, sunt afişate săptămânile şi ziua curentă. Intervalul selectat se afişează prin intermediul unei etichete. Dacă se selectează o singura dată atunci aceasta va fi adăugată ca item într-un ComboBox (orice dată poate apărea cel mult o dată în listă).

Creati un proiect Windows Forms cu numele UtilizareCalendar Pentru forma care se deschide setati urmatoarele proprietati:

Page 9: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

9

o (Name): mainForm o BackColor: Silver (tabul Web) o Font: Bold o ForeColor: Navy (Web) o FormBorderStyle: FixedSingle o Size: 445, 265 o StartPositon: CenterScreen o Text: Utilizare Calendar

Trageti pe forma un control MonthCalendar si setati urmatoarele proprietati: o (Name): myMonthCalendar o BackColor: BlanchedAlmond (Web) o ForeColor: Navy o Location: 15, 25 o MaxSelectionCount: 30 (numarul maxim de zile dintr-un interval selectat) o ShowTodayCircle: False o ShowWeekNumber: True o TitleBackColor: DarkMagenta (Web)

Trageti pe forma un control ComboBox si setati urmatoarele proprietati: o (Name): myComboBox o Locaton: 275, 25

Trageti pe forma un control Label si setati urmatoarele proprietati: o (Name): myLabel o Location: 15, 200

Selectati calendarul si in fereastra Properties selectati tabul Events (fulgerul galben). Din lista evenimentelor selectati DateSelected si faceti dublu-clic pentru a deschide administratorul asociat. Scrieti codul in rosu:

private void myMonthCalendar_DateSelected(object sender, DateRangeEventArgs e) { //in eticheta se afiseaza intervalul selectat this.myLabel.Text = "Intervalul selectat: Start=" + e.Start.ToShortDateString()+" End: "+e.End.ToShortDateString(); //daca este selectata o singura zi if (e.Start.ToShortDateString() == e.End.ToShortDateString()) { string x = e.Start.ToShortDateString(); //respectiva data este adaugata in ComboBox, daca nu exista deja if (!myComboBox.Items.Contains(x)) myComboBox.Items.Add(x); } }

Page 10: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

10

Evenimentele MouseDown, MouseUp, MouseMove Grupul de controale Toolbar (ToolStrip) afişează o bară de butoane în partea de sus a unui formular. Se pot introduce vizual butoane (printr-un designer, direct din Visual Studio.NET IDE), la care se pot seta atât textul afişat sau imaginea. Evenimentul cel mai util al acestui control este ButtonClick (care are ca parametru un obiect de tip ToolBarButtonClicEventArgs, prin care programatorul are acces la butonul care a fost apăsat). Exemplu: Modificare proprietăţi În aplicaţia următoare cele 3 butoane ale toolbar-ului permit modificarea proprietăţilor textului introdus în casetă. Toolbar-ul se poate muta fără a depăşi spaţiul ferestrei. Schimbarea fontului se realizează cu ajutorul unui control FontDialog(), iar schimbarea culorii utilizează ColorDialog(). Mutarea toolbar-ul este dirijată de evenimentele produse atunci când apăsăm butonul de mouse şi ne deplasăm pe suprafaţa ferestrei.

Creati un proiect Windows Forms cu numele BaraMeniuri Pentru forma care se deschide setati urmatoarele proprietati:

o (Name): mainForm o BackColor: LightGray (Web) o Font : Bold o FormBorderStyle: FixedDialog o MaximizeBoxx: False o MinimizeBox: False o Size: 620, 300 o Text: Bara de unelte

Trageti pe forma un control ToolStrip din sectiunea Menus&Toolbars din Toolbox si setati urmatoarele proprietati:

o (Name): myToolBar

Page 11: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

11

o AutoSize: False o Dock: None o Font: Tahoma Bold o Location: 10, 10 o Padding: Left 10 o Size: 250, 30

Faceti clic pe sageata din myToolBar si adaugati un buton, un separator, un buton, un separator, un buton, un separator.

Pentru cele trei butoane adaugate in Toolbar setati, in ordine, urmatoarele proprietati

o (Name): textToolbarButton, fontToolbarButton, colorToolbarButton o AutoSize: False o DisplayStyle: Text o Size: 62, 25 o Text: Text nou, Font, Culoare

Trageti pe forma un control RichTextBox (caseta de text care admite formarea textului afisat) si setati urmatoarele proprietati:

o (Name): myRichTextBox o Font: 10 Bold o Location: 330, 210 o Multiline: True (mai multe linii) o Size: 270, 50

Daca rulati aplicatia, ar trebui sa obtineti:

Faceti dublu-clic pe butonul Text nou si in administratorul creat scrieti textul in rosu:

Page 12: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

12

private void textToolbarButton_Click(object sender, EventArgs e) { myRichTextBox.Clear(); //textul din caseta este sters myRichTextBox.Focus(); //caseta primeste focusul }

La apasarea butonului Font dorim sa se deschida o fereastra de dialog ca cea din figura urmatoare pentru a stabili in mod interactiv stilul si dimensiunea fontului utilizat:

Aceasta functionalitate poate fi obtinuta cu ajutorul unui obiect din clasa FontDialog.

Faceti dublu-clic pe butonul Font si scrieti in administrator codul in rosu: private void fontToolbarButton_Click(object sender, EventArgs e) { FontDialog fd = new FontDialog(); //creaza un obiect de dialog if (fd.ShowDialog() != System.Windows.Forms.DialogResult.Cancel) //daca userul nu a apasat in fereastra de dialog butonul Cancel { myRichTextBox.Font = fd.Font;

//fontul texului din caseta de text este setat la fontul ales de //utilizator si memorat in dialogul fd

} }

La apasarea butonului Culoare dorim sa se deschida o fereastra de dialog ca cea din figura urmatoare in care utilizatorul sa poata alege in mod interactiv culoarea textului afisat in caseta de text.

Aceasta functionalitate poate fi obtinuta cu ajutorul unui obiect din clasa ColorDialog.

Page 13: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

13

Faceti dublu-clic pe butoanul Culoare si scrieti codul in rosu: private void colorToolbarButton_Click(object sender, EventArgs e) { ColorDialog cd = new ColorDialog(); //creaza un obiect de dialog cd.AllowFullOpen = true; //permite deschiderea completa a ferestrei de dialog if (cd.ShowDialog() == System.Windows.Forms.DialogResult.OK) //daca userul nu a apasat butonul Cancel myRichTextBox.ForeColor = cd.Color; //culoarea textului afisat in caseta de text este setata la culoarea //aleasa de utilizator si memorata in dialogul cd }

Dorim ca Toolbar-ul sa poata fi deplasat pe ecran cu ajutorul mouse-ului. In plus, cand bara atinge marginea stanga a ferestrei, ea este automat docata la aceasta margine (Left), respectiv cand atinge marginea de sus este docata sus (Top). Daca bara iese din fereastra la dreapta sau jos, ea este docata automat dupa regula anterioara. Pentru a obtine aceasta functionalitate vom folosi trei evenimente asociate barei de unelte si anume: MouseDown, MouseUp, MouseMove.

Selectati bara de unelte si in fereastra Properties selectati tabul Events (fulgerul galben). Faceti, in ordine, dublu-clic pe evenimentele MouseDown, MouseUp si MouseMove pentru a crea administratorii corespunzatori.

Scrieti in primul eveniment codul in rosu: Boolean am_apasat; //variabile globale in clasa mainForm

Point forma_deplasata; private void myToolBar_MouseDown(object sender, MouseEventArgs e) { am_apasat = true; forma_deplasata = new Point(e.X, e.Y); //creaza un punct cu cordonatele date de pozitia mousului myToolBar.Capture = true; //bara de unelte urmareste miscarea mousului myToolBar.Location = forma_deplasata; //bara de unelte este reafisata in noua pozitie (punct pe ecran) }

In al doilea administrator scrieti codul: private void myToolBar_MouseUp(object sender, MouseEventArgs e) { am_apasat = false; myToolBar.Capture = false; //bara de unelte nu mai urmareste miscarea mousului myRichTextBox.Text = "Am mutat bara de unelte"; //se afiseaza in caseta de text un mesaj informativ }

In alt treilea administrator trebuie sa realizam docarea automata a barei de unelte la stanga si sus si in cazul in care bara este deplasata inafara ferestrei. In administrator scrieti codul in rosu:

private void myToolBar_MouseMove(object sender, MouseEventArgs e) { if (am_apasat) //a fost apasat pe bara de unelte butonul mouse-ului { if (myToolBar.Dock == DockStyle.Top || myToolBar.Dock ==

Page 14: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

14

DockStyle.Left) //daca bara este docata la stanga sau sus { if (forma_deplasata.X < (e.X - 20) || forma_deplasata.Y < (e.Y - 20)) //daca bara nu iese din fereastra { am_apasat = false; myToolBar.Dock = DockStyle.None; myToolBar.Location = new Point(10, 10); myToolBar.Size = new Size(250, 30); //bara este afisata in punctul de coordonate (10,10) } } else if (myToolBar.Dock == DockStyle.None) { myToolBar.Left = e.X + myToolBar.Left - forma_deplasata.X; myToolBar.Top = e.Y + myToolBar.Top - forma_deplasata.Y; if (myToolBar.Top < 5 || myToolBar.Top > this.Size.Height - 20) //bara a atins marginea de sus sau a iesit din fereastra

//miscandu-se in jos { am_apasat = false; myToolBar.Dock = DockStyle.Top; //bara este docata sus myToolBar.Size = new Size(this.Size.Width, 30); } else if (myToolBar.Left < 5 || myToolBar.Left > this.Size.Width - 20) //bara a tins marginea din stanga sau a iesit din //fereastra miscandu-se spre dreapta { am_apasat = false; myToolBar.Dock = DockStyle.Left; //bara este docata la stanga myToolBar.Size = new Size(60, this.Size.Height); } } } }

Page 15: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

15

Metoda ShowDialog() Exemplu: Fişiere Exemplul permite, prin intermediul unui meniu, scrierea unui fişier Notpad, afişarea continutului acestuia într-o casetă text, schimbarea fontului şi culorii de afişare, ştergerea conţinutului casetei, afişarea unor informaţii teoretice precum şi Help dinamic. Au fost definite chei de acces rapid pentru accesarea componentelor meniului si anume:

FileNew permite scrierea unui fişier notepad nou: FileOpen selectează şi afişează în caseta text conţinutul unui fişier text. FileClose şterge conţinutul casetei text, FileExit închide aplicaţia, Window Font şi WindowColor permit stabilirea fontului/culorii textului afişat. HelpDinamicHelp accesează help-ul online: HelpAbout PV afişează în caseta text informaţii despre implementarea unui meniu.

Pentru deschiderea interactiva a unui fisier vom folosi un obiect din clasa OpenFileDialog care va deschide o fereastra in care putem selecta fisierul text (proprietatea Filter) pe care dorim sa-l deschidem. Numele fisirerului selectat va fi memorat in obiectul de dialog of. Deschiderea efectiva a fisierului necesita un obiect din clasa FileStream (flux de fisiere). Fisierul cu numele memorat in of.FileName va fi deschis (proprietatea FileMode.Open) pentru a fi citit (proprietatea FileAccess.Read). Citirea efectiva, linie cu linie, a informatiilor din fisierul text deschis necesita utilizarea unui „cititor de fluxuri” StreamReader. Metoda Peek() returneaza valoarea -1 cand intalneste marcajul de sfarsit de fisier, adica s-a citit toata informatia din fisier. In acest moment fisierul (fluxul) poate fi inchis. Pentru a putea lucra cu fluxuri de fisiere trebuie sa adaugati in fisierul Form1.cs declaratia: using System.IO;

Creati un proiect Windows Forms cu numele UtilizareFisiere Pentru forma care se deschide setati urmatoarele proprietati:

o (Name): mainForm o BackColor: Linen (Web) o Font: Bold

Page 16: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

16

o FormBorderStyle: FixedSingle o MaximizeBox: False o MinimizeBox: False o Size: 660, 330 o Text: Utilizarea fisierelor externe

Trageti pe forma un control MenuStrip din sectiunea Menus&Toolbars si setati urmatoarele proprietati:

o (Name): myMenu o Font: Tahoma 10 Bold

Faceti clic in caseta din meniu Type here si introduceti cele trei optiuni principale de meniu: File, Windows, Help.

Faceti clic pe File, apasati Enter si introduceti suboptiunile de meniu: New, Open, Close, Exit, fiecare incheiata cu un Enter

Faceti clic pe Windows si introduceti suboptiunile de meniu Font si Color, incheiate fiecare cu Enter

Faceti clic pe Help si introduceti suboptiunile Dinamic Help si About PV incheiate fiecare cu Enter Trageti pe forma un control RichTextBox si setati urmatoarele proprietati:

o (Name): myRichTextBox o Location: 145, 40 o Multiline: True o ReadOnly: True o ScrollBalls: ForcedBoth o Size: 475, 235 o Visibile: False

Faceti dublu-clic pe optiunea New din File si scrieti codul in rosu: private void newToolStripMenuItem_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("notepad"); //deschide aplicatia Notepad }

Faceti dublu-clic pe optiunea Open si scrieti codul in rosu: private void openToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog of = new OpenFileDialog(); //se creeaza un obiect de dialog of.Filter = "Text files (*.txt)|*.txt"; //stabileste criteriul de fltrare a fisierelor of.Title = "Fisiere text"; if (of.ShowDialog() == DialogResult.Cancel) return; //daca userul apasa Cancel fereastra de dialog se inchide myRichTextBox.Text = ""; myRichTextBox.Visible = true; //caseta de text devine vizibila

Page 17: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

17

FileStream str; try { str = new FileStream(of.FileName, FileMode.Open, FileAccess.Read); //se creeaza un flux de fisiere care se deschide pentru citire StreamReader rdr = new StreamReader(str); //se creeaza un cititor de fluxuri while (rdr.Peek() >= 0) //cat timp nu s-a terminat fisierul { string rl = rdr.ReadLine(); //se citeste o linie din fisier myRichTextBox.Text += rl + "\r\n"; //se adauga in caseta de text } str.Close(); //se inchide fluxul/fisierul } //prinderea exceptiei daca fisierul text ales nu poate fi deschis

catch(Exception) { MessageBox.Show("Error opening file", "File Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }

Faceti dublu-clic pe optiunea Close si scrieti codul in rosu: private void closeToolStripMenuItem_Click(object sender, EventArgs e) { myRichTextBox.Clear(); //sterge textul afisat in caseta myRichTextBox.Visibile=false; //caseta redevine invizibila }

Faceti dublu-clic pe optiunea Exit si scrieti codul in rosu: private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); //se inchide aplicatia }

Faceti dublu-clic pe optiunea Font si scrieti codul in rosu. Functionalitatea este explicata in aplicatia anterioara.

private void fontToolStripMenuItem_Click(object sender, EventArgs e) { FontDialog fd = new FontDialog(); if (fd.ShowDialog() != System.Windows.Forms.DialogResult.Cancel) { myRichTextBox.Font = fd.Font; } }

Faceti dublu-clic pe optiunea Color si scrieti codul in rosu. Functionalitatea este explicata in aplicatia anterioara.

private void colorToolStripMenuItem_Click(object sender, EventArgs e) { ColorDialog cd = new ColorDialog(); cd.AllowFullOpen = true; if (cd.ShowDialog() != System.Windows.Forms.DialogResult.Cancel) { myRichTextBox.ForeColor = cd.Color; } }

Page 18: PV 5 C# · Vom adauga pe forma un control CheckedListBox care va contine sapte casete de validare pentru zilele saptamanii. La apasarea unui buton, itemii bifati vor fi afisati intr-un

18

Faceti dublu-clic pe optiunea Dinamic Help si scrieti codul in rosu: private void dinamicHelpToolStripMenuItem_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("Firefox", "http://msdn2.microsoft.com/en-us/default.aspx"); }

Faceti dublu-clic pe optiunea About PV si scrieti codul in rosu: private void aboutPVToolStripMenuItem_Click(object sender, EventArgs e) { string s = "Pentru a adauga unui forme un control de tip meniu\n\rtrageti pe forma, din Toolbox, un control MenuStrip\n\rsi stabiliti apoi optiunile si suboptiunile de meniu."; MessageBox.Show(s, "Despre crearea meniurilor", MessageBoxButtons.OK, MessageBoxIcon.Information); }