Exercițiu
Construiești o aplicație desktop pentru gestionarea unei liste de angajați. Fereastra principală afișează toți angajații într-un DataGridView. Adăugarea și editarea se fac printr-un formular secundar reutilizabil — același formular se deschide gol pentru adăugare și precompletat pentru editare. Datele sunt stocate în memorie pe durata sesiunii.
Clasa Angajat și structura proiectului
Angajat și structura proiectuluiAdaugă în proiect clasa Angajat cu proprietățile:
string Numestring Prenumestring Departamentdecimal SalariuDateTime DataAngajariibool EstePermanent
Adaugă metoda GetNumeComplet() care returnează "Prenume Nume" și suprascrie ToString() cu același rezultat.
Proiectul va conține două formulare:
Form1— fereastra principală cu lista de angajațiFormAngajat— formularul secundar pentru adăugare și editare
Adaugă FormAngajat prin Project → Add → Windows Form.
Fereastra principală cu DataGridView
DataGridViewPe Form1 adaugă:
Un
DataGridView(dgvAngajati) care ocupă cea mai mare parte a ferestreiUn
Label+ComboBox(cmbFiltruDepartament) pentru filtrare, deasupra grileiTrei
Button-uri sub grilă:btnAdauga,btnEditeaza,btnStergeUn
Labelde status (lblStatus) în partea de jos
Configurează dgvAngajati:
ReadOnly = trueSelectionMode = FullRowSelectMultiSelect = falseAutoSizeColumnsMode = Fill
Declară în Form1 o BindingList<Angajat> și asign-o ca DataSource al dgvAngajati în evenimentul Load.
Populează cmbFiltruDepartament cu valorile: "Toate", "IT", "HR", "Financiar", "Vânzări". Selectează implicit "Toate".
Formularul secundar FormAngajat
FormAngajat Pe FormAngajat adaugă:
Label+TextBoxpentru Nume (txtNume)Label+TextBoxpentru Prenume (txtPrenume)Label+ComboBoxpentru Departament (cmbDepartament) cu valorile:"IT","HR","Financiar","Vânzări"Label+TextBoxpentru Salariu (txtSalariu)Label+DateTimePickerpentru Data angajării (dtpDataAngajarii)CheckBoxpentru"Angajat permanent"(chkEstePermanent)ButtonOK (btnOk) șiButtonAnulează (btnAnuleaza)
Configurează formularul:
FormBorderStyle = FixedDialogStartPosition = CenterParentMaximizeBox = false,MinimizeBox = falseSetează
AcceptButton = btnOkșiCancelButton = btnAnuleaza
Adaugă în FormAngajat:
O proprietate publică
Angajat AngajatRezultatcare va conține datele introduseUn constructor care primește un
Angajatopțional (nullpentru adăugare)Dacă
Angajatprimit nu estenull, completează câmpurile cu datele lui și schimbăText-ul formularului în"Editează angajat"Dacă este
null, seteazăText="Angajat nou"
Adăugarea unui angajat
La click pe btnAdauga din Form1:
Deschide
FormAngajatcuShowDialog(), transmițândnullDacă
DialogResult == DialogResult.OK, adaugăAngajatRezultatînBindingListActualizează
lblStatus
În FormAngajat, la click pe btnOk:
Validează că Nume, Prenume nu sunt goale și că Salariul este un număr pozitiv
Dacă validarea eșuează, folosește
ErrorProviderpentru a marca câmpul și nu închide formularulDacă validarea reușește, construiește
AngajatRezultatdin valorile câmpurilor și seteazăthis.DialogResult = DialogResult.OK
Editarea unui angajat
La click pe btnEditeaza din Form1:
Verifică dacă un rând este selectat; dacă nu, afișează
MessageBoxObține
Angajat-ul selectat dinBindingListfolosinddgvAngajati.SelectedRows[0].IndexDeschide
FormAngajatcuShowDialog(), transmițând obiectul selectatDacă
DialogResult == DialogResult.OK, înlocuiește angajatul dinBindingListcuAngajatRezultat
Ștergere și filtrare
Ștergere: La click pe btnSterge:
Verifică dacă un rând este selectat
Afișează
MessageBoxcu confirmareYesNocare include numele angajatuluiDacă confirmat, elimină angajatul din
BindingList
Filtrare după departament: La SelectedIndexChanged pe cmbFiltruDepartament:
Dacă valoarea selectată este
"Toate", seteazăDataSource-ul cu întreagaBindingListAltfel, construiește o listă filtrată și setează-o ca
DataSourcetemporar
Last updated