ComboBox combină un câmp text cu o listă derulantă. Utilizatorul poate fie alege o valoare din listă, fie (opțional) introduce una nouă. Este controlul potrivit când ai un set finit de valori cunoscute — departamente, categorii, statusuri.
Popularea cu valori
Varianta simplă — valori fixe adăugate în cod:
cmbDepartament.Items.Add("IT");cmbDepartament.Items.Add("HR");cmbDepartament.Items.Add("Financiar");cmbDepartament.Items.Add("Vânzări");// Sau cu AddRange pentru mai multe valori dintr-o datacmbDepartament.Items.AddRange(newstring[]{"IT","HR","Financiar","Vânzări"});
Varianta cu DataSource — pentru liste din colecții sau enumerații:
// Din arraycmbDepartament.DataSource=newstring[]{"IT","HR","Financiar","Vânzări"};// Din enumcmbDepartament.DataSource=Enum.GetValues(typeof(Departament));
Popularea se face în Form_Load, nu în constructor, pentru că controalele sunt disponibile și formularul este gata de afișat.
📸 SCREENSHOT:ComboBox deschis (lista derulantă vizibilă) cu valorile departamentelor listate. Arată cum arată atât starea închisă cât și cea deschisă.
DropDownStyle
Controlează dacă utilizatorul poate introduce valori libere sau doar alege din listă:
Pentru departamente, DropDownList este alegerea corectă — nu vrem valori libere introduse de utilizator.
Selectarea și citirea valorii
La precompletarea câmpurilor în modul editare, atribuim direct valoarea string:
Evenimentul SelectedIndexChanged
Se declanșează când selecția se schimbă. Util pentru filtrare sau pentru a actualiza alte controale în funcție de selecție:
📸 SCREENSHOT: Fereastra principală cu cmbFiltruDepartament selectat pe „IT" și DataGridView-ul afișând doar angajații din departamentul IT. Arată că filtrarea funcționează în timp real.
cmbDepartament.DropDownStyle = ComboBoxStyle.DropDownList;
// Utilizatorul poate DOAR alege din lista — nu poate tasta liber
// Recomandat cand setul de valori este fix si controlat
cmbDepartament.DropDownStyle = ComboBoxStyle.DropDown;
// Utilizatorul poate alege SAU tasta o valoare noua (comportament implicit)
// Selectare prin index (primul element, index 0)
cmbDepartament.SelectedIndex = 0;
// Selectare prin valoare
cmbDepartament.SelectedItem = "IT";
// Citire — valoarea selectata ca object, necesita ToString()
string departament = cmbDepartament.SelectedItem.ToString();
// Verificare ca ceva e selectat
if (cmbDepartament.SelectedItem == null)
{
MessageBox.Show("Selecteaza un departament.");
return;
}
cmbDepartament.SelectedItem = angajatDeEditat.Departament;
// Daca valoarea exista in Items, e selectata automat
// Daca nu exista, SelectedItem ramane null