clipboard-list-checkRezumat

1. Formulare multiple și comunicarea între ele

Concept
Ce înseamnă

Show()

Deschide non-modal — ambele ferestre active simultan

ShowDialog()

Deschide modal — blochează fereastra părinte până la închidere

Constructor cu parametru

Mecanismul preferat de transmitere a datelor spre formularul secundar

Proprietate publică

Mecanismul de returnare a datelor din formularul secundar

using (var f = new Form()) { }

Garantează Dispose() după ShowDialog()

Pattern complet de deschidere:

using (FormAngajat f = new FormAngajat(angajatSauNull))
{
    if (f.ShowDialog() == DialogResult.OK)
    {
        // f.AngajatRezultat este disponibil aici
    }
}

2. DialogResult și ciclul de viață

Concept
Ce înseamnă

this.DialogResult = OK

Închide formularul și returnează OK apelantului

AcceptButton

Butonul activat la Enter

CancelButton

Butonul activat la Escape și la X

btnOk.DialogResult = None

Necesar când ai validare în handler

Obiect accesibil după ShowDialog()

Citiți AngajatRezultat în blocul using, înainte de Dispose()

Ciclul de viață: newLoad → interacțiune → DialogResult = OK/CancelShowDialog() returnează → Dispose().

3. Reutilizarea formularului pentru adăugare și editare

Concept
Ce înseamnă

Constructor cu null

Modul adăugare — câmpuri goale

Constructor cu obiect

Modul editare — câmpuri precompletate în Form_Load

AngajatRezultat { get; private set; }

Proprietate publică citită de Form1 după ShowDialog()

Obiect nou în btnOk_Click

Modificările aplicate doar dacă DialogResult == OK

angajati[index] = f.AngajatRezultat

Înlocuire la editare — BindingList actualizează grila automat

4. DataGridView

Proprietate
Ce face

DataSource = bindingList

Leagă grila de colecție — actualizări automate

ReadOnly = true

Previne editarea directă în celule

SelectionMode = FullRowSelect

Selecția unui rând selectează toată linia

MultiSelect = false

Permite un singur rând selectat

AutoSizeColumnsMode = Fill

Coloanele umplu lățimea disponibilă

AllowUserToAddRows = false

Ascunde rândul gol de adăugare rapidă

SelectedRows[0].Index

Indexul rândului selectat = indexul în BindingList

Eveniment
Când se declanșează

SelectionChanged

La orice schimbare a selecției — activează/dezactivează butoane

CellDoubleClick

La dublu-click — deschide editarea direct

5. ComboBox și DateTimePicker

Concept

ComboBox

DateTimePicker

Proprietate principală

SelectedItem, SelectedIndex

Value

Setare inițială

SelectedIndex = 0

Value = DateTime.Today

Citire

SelectedItem.ToString()

Value.Date

Eveniment principal

SelectedIndexChanged

ValueChanged

Stil recomandat

DropDownStyle = DropDownList pentru valori fixe

Format = Custom, CustomFormat = "dd.MM.yyyy"

6. Validare cu ErrorProvider

Concept
Ce înseamnă

Validarea în FormAngajat

Nu în Form1 — formularul secundar cunoaște regulile proprii

errorProvider1.SetError(ctrl, msg)

Afișează iconița de eroare lângă control

errorProvider1.Clear()

Șterge toate erorile înainte de revalidare

Validare fără oprire la prima eroare

Marchează toate câmpurile cu probleme simultan

decimal.TryParse

Conversie sigură din text la număr, fără excepție

Last updated