2. deo: Kontrola unosa na nivou polja za unos podataka ... predviđeno za 13.02
Kontrola unosa na nivou polja za unos podataka predstavlja važan aspekt razvoja aplikacija, jer omogućava proveru unosa direktno na mestu gde korisnik unosi podatke.
U prethodnim lekcijama je više rađeno sa konzolom, a ovde će više biti rada sa formama.
Osnovne kontrole za unos podataka
Postoji više načina za ograničavanje unosa i validaciju podataka u Windows Forms aplikacijama.
1. TextBox i kontrola unosa pomoću događaja
TextBox je osnovna kontrola za unos podataka, ali ne nudi automatsku kontrolu unosa. Da bismo osigurali da korisnik unosi ispravan tekst, koristimo događaje kao što su KeyPress, TextChanged i Validating.
✅ Primer: Ograničenje unosa samo na brojeve
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true; // Blokira unos nebrojevnih karaktera
}
}
🔹 Ova funkcija osigurava da korisnik može uneti samo cifre (0-9).
2. MaskedTextBox – Unos sa unapred definisanim formatom
MaskedTextBox omogućava da korisnik unosi podatke u tačno određenom formatu. To je korisno za unos telefonskih brojeva, datuma, JMBG-a itd.
✅ Primer: Unos telefonskog broja
maskedTextBox1.Mask = "(999) 000-0000";
🔹 9 označava da korisnik može uneti cifru, ali nije obavezno.
🔹 0 označava da cifra mora biti uneta.
3. NumericUpDown – Unos isključivo brojeva
Ako želite da korisnik unosi samo numeričke vrednosti u određenom opsegu, NumericUpDown je odličan izbor.
✅ Primer: Postavljanje minimalne i maksimalne vrednosti
numericUpDown1.Minimum = 1;
numericUpDown1.Maximum = 100;
🔹 Korisnik može unositi brojeve samo između 1 i 100.
4. DateTimePicker – Unos datuma
Za unos datuma najbolje je koristiti DateTimePicker, jer omogućava izbor datuma bez potrebe za ručnim unosom.
✅ Primer: Prikaz datuma u kratkom formatu
dateTimePicker1.Format = DateTimePickerFormat.Short;
🔹 Sprečava nepravilne unose poput "32/13/2024".
5. ComboBox – Ograničavanje unosa na unapred definisane opcije
Ako želite da korisnik bira samo između nekoliko opcija, umesto da unosi proizvoljan tekst, koristite ComboBox.
✅ Primer: Dodavanje opcija u ComboBox
comboBox1.Items.Add("Mogućnost 1");
comboBox1.Items.Add("Mogućnost 2");
comboBox1.Items.Add("Mogućnost 3");
🔹 Sprečava pogrešan unos jer korisnik ne može uneti proizvoljan tekst.
6. ErrorProvider – Prikazivanje greške korisniku
ErrorProvider je alat koji omogućava vizuelno prikazivanje greške kada unos nije validan.
✅ Primer: Prikazivanje poruke greške ako polje ostane prazno
private void textBox1_Validating(object sender, CancelEventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text))
{
errorProvider1.SetError(textBox1, "Ovo polje ne može biti prazno!");
e.Cancel = true; // Sprečava prelazak na drugo polje
}
else
{
errorProvider1.SetError(textBox1, "");
}
}
🔹 Ako korisnik ne unese ništa, pojavljuje se crveni znak upozorenja.
Praktične vežbe
- Zadatak 1: Napravite Windows Forms aplikaciju sa TextBox kontrolom i osigurajte da korisnik može uneti samo brojeve.
- Zadatak 2: Dodajte MaskedTextBox i postavite ga da prima JMBG u formatu
0000000000000. - Zadatak 3: Napravite DateTimePicker kontrolu koja korisniku omogućava unos samo datuma u formatu
dd.MM.yyyy. - Zadatak 4: Kreirajte ComboBox sa tri opcije (
"Mali paket","Srednji paket","Veliki paket"), i zabranite ručni unos teksta. - Zadatak 5: Dodajte ErrorProvider koji prikazuje grešku ako korisnik ne unese ništa u TextBox.