Kontrole CheckBox , RadioButton i GroupBox


O upotrebi kontrola CheckBox , RadioButton i GroupBox u WinForms aplikacijama. Osobine, metode, događaji. Rešeni zadaci sa objašnjenjima kao i zadaci za samostalni rad(Cena artikla sa PDV, Visibe/Enabled, Idealna težina, Konvertor brojeva, Boje, Računi, Konfigurator, Letovanja, Košarkaški kviz…)

29.1 ● Polje za potvrdu (CheckBox)

Kontrola CheckBox(polje za potvrdu) namenjena je potvrdi stavke koja može biti izabrana ili opozvana nezavisno od ostalih kontrola. Kompletan opis svih konstruktora, svojstava(osobina) , metoda i događaja uvek je dostupan  na Microsoftovom sajtu , na adresi:  https://learn.microsoft.com/en- us/dotnet/api/system.windows.forms.checkbox?view= windowsdesktop-8.0 .

Slika_29_1: Čekirano i nečekirano polje za potvrdu

Neka od bitnih svojstava kontrole CheckBox data su u Tabela_29_1:

SvojstvoOpis svojstva
CheckedUkoliko je vrednost True kontrola je izabrana(potvrđena) a ukoliko je vrednost False kontrola nije izabrana(potvrđena). Najznačajnije svojstvo kontrole CheckBox.
TextTekst prikazan u kontroli.
TextAlignPoravnavanje teksta unutar kontrole(TopLeft, TopCenter, TopRight, iddleLeft…BottomRight).
SizeDužina i širina kontrole.
BackColorBoja pozadine kontrole.
FontSvojstva fonta teksta kontrole
ForeColorBoja teksta kontrole
NameIme kontrole
LocationKoordinate gornjeg levog temena kontrole u odnosu na kontejner koji je sadrži. Kontejner je najčešće forma.
AutoSizeUkoliko je vrednost true kontrola automatski menja dužinu/širinu da bi bio vidljiv ceo tekst. Ukoliko je vrednost false kontrola ne menja svoju veličinu
VisibleUkoliko je vrednost True kontrola će biti vidljiva a ukoliko je vrednost False kontrola će biti nevidljiva
EnabledUkoliko je vrednost True moguće je ostvariti interakciju sa korisnikom a ukoliko je vrednost False to nije moguće. Podrazumevana vtrdnost je True

Tabela_29_1: Svojstva kontrole CheckBox

Tekst pored kontrole RadioButton se podešava pomoću svojstva Text. Pomoću svojstva Checked( true ili false) koje se može i čitati i postavljati,  možemo utvrditi dali je kontrola potvrđena(izabrana, čekirana, označena).  Najbitniji događaj kontrole je CheckedChanged koji se pokreće kada se vrednost svojstva Checked promeni.

29.2 ● Radio dugme (RadioButton)

Kontrola RadioButton (radio dugme) se koristi kada je potrebno izabrati samo jednu od ponuđenih opcija(npr: pol, valutu, zemlju..). Ukoliko na formi imate više kontrola RadioButton tada izbor jedne od njih automatski isključuje ostale. Ukoliko se na formi koristi više nezavisnih grupa kontrola RadioButton onda ih treba smestiti u posebne kontejnere(npr: GroupBox ili Panel). Ova kontrola je veoma slična kontroli CheckBox. Kompletan opis svih konstruktora, svojstava , metoda i događaja uvek je dostupan  na Microsoftovom sajtu , na adresi:  https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.radiobutton?view=windowsdesktop-8.0

Svojstva Text, Checked i događaj CheckedChanged su slični kao i kod kontrole CheckBox.

Slika_29_2: Čekiran i nečekiran RadioButton

29.3 ● GroupBox

Kontrola GroupBox je namenjena grupisanju ostalih kontrola koje sadrži forma ( CheckBox i/ili RadioButton). Ima veoma slična svojstva kao i predhodne dve kontrole. Kompletan opis svih konstruktora, svojstava , metoda i događaja uvek je dostupan  na Microsoftovom sajtu , na adresi:  https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.groupbox?view=windowsdesktop-8.0

Slika_29_3: Kontrola GroupBox

29.4 ● Vežba (CheckBox i Checked): Kreirati formu koja se sastoji od jedne CheckBox kontrole sa tekstom ‘’Ovo je polje za potvrdu’’ i tri Button kontrole sa tekstom ‘’Prikaži’’ , ‘’Poništi’’ i ‘’Zatvori’’. Klikom na dugme ‘’Prikaži’’ treba koristeći klasu MessageBox prikazati poruku ‘’Polje za potvrdu je izabrano” ili ‘’Polje za potvrdu nije izabrano’’ u zavisnosti od statusa kontrole Checbox (potvrđena/nepotvrđena). Klikom na dugme ‘’Poništi’’ status kontroje CheckBox se postavlja na nepotvrđeno(Checked=False) . Klikom na dugme ‘’Zatvori’’ forma se zatvara. Ime forme je Main a u naslovu je Polje za potvrdu. Korisnički interfejs je dat na Slika_29_4

Zadatak treba da demonstrira korišćenje kontrole CheckBox i njenog svojstva Checked. Kontrola  može biti potvrđena(izabrana, čekirana) i tada je vrednost svojstva Checked true. Ukoliko polje nije potvrđeno(izabrano, čekirano) vrednost svojstva Checked je false. Na Slika_29_1 prikazana su oba statusa ove kontrole.

Slika_29_4: Korisnički interfejs za vežba 29.4

private void btnPrikazi_Click(object sender, EventArgs e) {
  if (chk.Checked)
    // ChecBox je potvrđen(chk.Checked=true)   
    MessageBox.Show("Polje za potvrdu je izabrano", "Poruka");
  else
    // ChecBox nije potvrđen(chk.Checked=false)  
    MessageBox.Show("Polje za potvrdu nije izabrano", "Poruka");
}

private void btnPonisti_Click(object sender, EventArgs e) {
  chk.Checked = false;
}

Kompletan kod projekta za Vežba 29.3 možete preuzeti ovde.

29.5 ● Vežba(Cena artikla sa PDV): Kreirati formu imena Main i koja u naslovu sadrži tekst ‘’Cena artikla’’. Na formi postoji kontrolaTextBox i njoj pripadajuća Label-a koja treba da omogući unos cene artikla bez PDV(tipa double). Uz to postoji i kontrola CheckBox sa tekstom PDV koja treba da odredi dali se u konačnu cenu uračunava PDV ili ne, i  kontrole Label u koje treba upisati iznos PDV i cenu artikla sa PDV-om zaokružene na dve decimale. Na kraju potrebne su  tri kontrole Button sa tekstom ‘’Izračunaj’’ , ‘’Poništi’’ i ‘’Zatvori’’ funkcionalnosti opisane u predhodnim zadacima. Vrednost PDV-a je fiksna i iznosi 20%. Korisnički interfejs prikazan je na Slika_29_5.

Slika_29_5: Korisnički interfejs za Vežba 29.5.

private void btnIzracunaj_Click(object sender, EventArgs e) {
  double cenaBezPdv, pdv = 0, iznosPdv, cenaSaPdv;
  bool result = double.TryParse(txtCenaBezPDV.Text, out cenaBezPdv);
  if (!result) {
    MessageBox.Show("Nekorektno uneti podaci u polje Cena bez PDV.");
    return;
  }
  if (chkPDV.Checked) pdv = 20;
  iznosPdv = cenaBezPdv * pdv / 100;
  cenaSaPdv = cenaBezPdv + iznosPdv;
  lblIznosPdv.Text = iznosPdv.ToString("0.00");
  lblCenaSaPdv.Text = cenaSaPdv.ToString("0.00");
}
private void btnPonisti_Click(object sender, EventArgs e) {
  txtCenaBezPDV.Text = "";
  chkPDV.Checked = false;
  lblIznosPdv.Text = "...";
  lblCenaSaPdv.Text = "...";
}

Kompletan kod projekta za Vežba 29.5 možete preuzeti ovde.

29.6 ● Vežba(Visible & Enabled): Kreirati formu imena Main koja u naslovu ima tekst “Visible & Enabled”.Na formi postoji kontrola TextBox sa proizvoljnim tekstom, ispod nje dve kontrole CheckBox sa tekstom “Visible” i “Enabled” i kontrola Button sa tekstom “Zatvori” čija je funkcija zatvaranje forme. Ukoliko je CheckBox “Visible” potvrđen TextBox je vidljiv a u suprotnom je nevidljiv. Ukoliko je CheckBox “Enabled” potvrđen TextBox je dostupan za interakciju sa korisnikom(Enabled=True) a u suprotnom nije. Korisnički interfejs je prikazan na Slika_29_6.

Slika_29_6: Korisnički interfejs za Vežba 29.6

Promenom vrednosti svojstva Checked, kontrole CheckBox, pokreće se događaj ChangedChecked. Vrednosti svojstava Visible(Enabled) postavićemo na vrednosti Checked odgovarajuće kontrole CheckBox , kao u kodu koji sledi:

private void chkVisible_CheckedChanged(object sender, EventArgs e) {
  // Svojstvo Visible TextBox-a txt postavlja na vrednost Checked CheckBox-a chkVisible
  // true ukoliko je CheckBox potvrđen, false ukoliko nije potvrđen
  txt.Visible = chkVisible.Checked;
}
private void chkEnabled_CheckedChanged(object sender, EventArgs e) {
  // Svojstvo Enabled TextBox-a txt postavlja na vrednost Checked CheckBox-a chkEnabled
  // true ukoliko je CheckBox potvrđen, false ukoliko nije potvrđen

  txt.Enabled = chkEnabled.Checked;
}

Kompletan kod projekta za Vežba 29.6 možete preuzeti ovde.

29.7 ● Vežba(kontrola RadioButton): Kreirati formu imena Start koja u naslovu ima tekst “RadioButton”. Na formi postoji kontrola GroupBox koja sadrži dve kontrole RadioButton kojima se bira pol. Forma takođe ima i kontroole tipa Button sa natpisima “Prikaži” i “Zatvori”. Klikom na prvu Button kontrolu, koristeći klasu MessageBox, prikazuje se poruka “Ženski pol” ili “Muški pol” u zavisnosti od izabrane kontrole RadioButto. Klikom na kontrolu Button sa tekstom “Zatvori” , zatvara se forma. Po otvaranju forme izabran je ženski pol. Korisnički interfejs prikazan je na Slika_29_7.

Slika_29_7: Korisnički interfejs za Vežba 29.7

Zadatak treba da demonstrira korišćenje kontrole RadioButton i njenog svojstva Checked. Kontrola  može biti potvrđena (izabrana, čekirana, označena) ili ne. Ukoliko je kontrola RadioButton izabrana vrednost tog svojstva je true a ako nije false.d je false.

private void btnPrikazi_Click(object sender, EventArgs e) {
  if (rbZenski.Checked)
    // Svojstvo Checked , kontrole rbZenski, je true (dugme je izabrano)
    MessageBox.Show("Ženski pol", "Poruka");
  else
    // Svojstvo Checked , kontrole rbMuski, je true (dugme je izabrano)
    MessageBox.Show("Muški pol", "Poruka");
}

Kompletan kod projekta za Vežbu 29.7 možete preuzeti ovde.

29.8● Vežba(Idealna težina): Kreirati formu imena Main koja u naslovu ima tekst “Idealna težina”. Na formi treba da postoje dva TextBox-a sa pripadajućim labelama za unos visine u cm  starosti  , GroupBox sa dva RadioButton kojima se bira biološki pol i labelu u koju treba upisati izračunatu idealnu težinu. Uz to , forma treba da sadrži i kontrole Button sa natpisima “Izračinaj”, “Poništi”, i Zatvori” čija je funkcionalnost objašnjena u ranijim zadacima. Pre izračunavanja idealne težine izvršiti proveru unetih vrednosti za visinu i starost. U slučaju nekorektnog unosa prikazati odgovarajuću poruku. Formula po kojoj treba računati idealnu težinu je: (visina-100+starost/10)*koeficijent. Koeficijen je 0.9 za muški pol odnosno 0.85 za ženski. Po otvaranju forme podrazumevano je izabran ženski pol. Korisnički interfejs je prikazan na Slika_29_8.

Napomena_29_1(O idealnoj težini): Postoji čitav niz različitih formula kojima se računa idealna težina. Izabrana je ova, iz čisto edukativnih razloga ka što je mogla biti izabrana i bilo koja druga. Dobijeni rezultati , ako zadatak testirate na sopstvenim podacima ne bi trebalo uzeti kao medicinski validan.

Slika_29_8: Korisnički interfejs za Vežba 29.8

U odnosu na ranije vežbe, provera validnosti podataka vrši se u okviru if naredbe te je izbegnuto korišćenje dodatne varijable rezultat. Za određivanje koeficijenta(koef) korišćen je ternarni operator.

private void btnIzracinaj_Click(object sender, EventArgs e) {
  double visina, starost;
  if (!double.TryParse(txtVisina.Text, out visina)) {
    MessageBox.Show("Nekorektno uneti podaci za visinu", "Greška");
    return;
  }
  if (!double.TryParse(txtStarost.Text, out starost)) {
    MessageBox.Show("Nekorektno uneti podaci za starost", "Greška");
    return;
  }
  double koef, idealnaTezina;
  koef = rbZenski.Checked ? 0.85 : 0.9;
  idealnaTezina = (visina - 100 + starost / 10) * koef;
  lblIdealnaTezina.Text = idealnaTezina.ToString("#.##");
}

Kompletan kod projekta za Vežba 29.8 možete preuzeti ovde.

29.9 ● Vežba(Konvertor brojeva): Kreirati formu imena Main koja u naslovu ima tekst “Konvertor brojeva”. Forma sadrži jednu kontrolu TextBox sa pripadajućom kontrolom Label koja je namenjena unosu broja u dekadnom brojevnom sistemu. Na formi postoji i kontrola GroupBox koja sadrži četiri kontrole RadioButton za izbor jednog brojevnog sistema( dekadni , binarni, oktalni i heksadecimalni) kao i kontrolu Label u koju se upisuje konvertovana vrednost unetog broja. Uz to forma sadrži i tri kontrole Button sa natpisima “Konvertuj” i “Zatvori”. Klikom na prvo dugme konvertuje se vrednost unetog broja i prikazuje u odgovarajućoj kontroli Label. Funkcionalnosti druge  kontrole Button(“Zatvori”) objašnjene su u ranijim vežbama. Po otvaranju forme izabran je dekadni brojevni sistem. Pre konverzije proveriti da li je korektno uneta vrednost u kontrolu TextBox. Korisnički interfejs prikazan je na Slika_29_9:

Slika_29_9: Korisnički interfejs za Vežba 29.9

Za konvertovanje dekadnog broja u brojčani ekvivalent sa drugom osnovom jednu od preopterećenih verzija metode ToString(..), klase Convert. Prvi parametar metdode je ceo broj koji se konvertuje a drugi osnova u koju se konverzija vrši. Više o ovoj klasi i njenoj metodi ToString možete naći na Microsoftovoj stranici: https://learn.microsoft.com/en-us/dotnet/api/system.convert.tostring?. Dakle, najpre određujemo izabranu brojevnu osnovu (varijabla brojevnaOsnova) a potom se vrši konverzija broja ( u dekadnom sistemu) u broj izabranog brojevnog sistema koristeći već pomenutu metodu Convert.ToString(..)

private void btnKonvertuj_Click(object sender, EventArgs e) {
  int broj;
  if (!int.TryParse(txtBroj.Text, out broj)) {
    MessageBox.Show("Pogrešno uneta vrednost za ceo broj", "Greška");
    return;
  }
  int brojevnaOsnova = 10;
  if (rbBinarni.Checked)
    brojevnaOsnova = 2;
  else if (rbOktalni.Checked)
    brojevnaOsnova = 8;
  else if (rbHeksadecimalni.Checked)
    brojevnaOsnova = 16;

  string konvertovaniBroj = Convert.ToString(broj, brojevnaOsnova);
  lblKonvertovaniBroj.Text = konvertovaniBroj;
}

Kompletan kod projekta za Vežba 29.9 možete preuzeti ovde.

29.10 ● (Boje): Kreirati formu sa imenom Main i sa naslovom “Boje”. Forma treba da sadrži jednu kontrolu Label , dimenzija 125×125 piksela kod koje je svojstvo BorderStyle postavljeno na FixedSingle. Na formi postoji i kontrola GroupBox unutar koje su raspoređena i četiri kontrole RadioButton koje će omogućiti izbor jedne od boja: zele, crna, crvena i plava. Boja teksta svake od kontrola RadioButton određena je u skladu sa bojom koju predstavlja. Izborom RadioButton kontrole menja se i svojstvo BackgroundColor kontrole Label. Po otvaranju forme izabrana je kontrola RadioButton koja predstavlja zelenu boju. Na formi postoji i kontrola Button sa natpisom “Zatvori” sa uobičajenom funkcionalnošću. Korisnički interfejs, vidljiv po pokretanju forme, prikazan je na Slika_29_10.

Slika_29_10: Korisnički interfejs za Vežba 29.10.

Prilikom dizajniranja forme, svojstvo BackColor , kontrole Label za prikaz izabrane boje treba postaviti na Green, BorderStyle na FixedSingle a AutoSize na false. To se postiže podešavanjem tih svojstava u okviru panela Properties na uobičajeni način(Slika_29_11):

Slika_29_11: Podešavanja za Label kontrolu

Takođe svojstvo Size treba postaviti na 125×125. Na sličan način za svojstvo ForeColor kontrole RadioButton izabrati  odgovarajuću boju. Na Slika_29_10 izabrane su , redom, sledeće vrednosti: Green, Black, Firebrick i DeepSkyBlue. Klikom na neku od kontrola RadioButton koje predstavljaju boje pokreće se događaj CheckedChanged u okviru kog se poziva metoda PromeniBoju() u kojoj se u zavisnosti od izabrane boje( svojstvo Checked kontrole je true) postavlja vrednost svojstva ForeColor. U tu svrhu koristimo strukturu Color za predstavljanje ARGB boja(alpha, reed, green, blue). Detaljnije o ovoj strukturi možete naći na Microsoftovoj stranici: https://learn.microsoft.com/en-us/dotnet/api/system.drawing.color?view=net-8.0. Prikazan je samo programski kod za događaje CheckedChanged kontrola RadioButton.

private void rbZelena_CheckedChanged(object sender, EventArgs e) {
  lbl.BackColor = Color.Green;
}
private void rbCrna_CheckedChanged(object sender, EventArgs e) {
  lbl.BackColor = Color.Black;
}
private void rbCrvena_CheckedChanged(object sender, EventArgs e) {
  lbl.BackColor = Color.Red;
}
private void rbPlava_CheckedChanged(object sender, EventArgs e) {
  lbl.BackColor = Color.Blue;
}

Kompletan kod projekta za Vežba 29.10 možete preuzeti ovde.

29.11 ● (Projekat): Kreirati formu sa imenom Main koja u naslovu ima tekst”Projekat”. Na formi postoje dve TextBox kontrole sa pripadajućim Label kontrolama koje su namenjene unosu naziva projekta i datuma početka realizacije istog, jedna kontrola GroupBox koja sadrži de RadioButton kontrole za izbor mesta realizacije projekta (“U Srbiji” ili “Van Srbije”), kontroku CheckBox kao  indikator dali je projekat završen ili nije. Uz to forma sadrži kontrolu TextBox za detaljniji opis projekta(omogućiti korisniku upis u više redova). Na kraju na formi postoje tri Button kontrole sa tekstom “Prikaži”, “Odustani” i “Zatvori”. Klikom na prvu Button kontrolu(“Prikaži”) u MessageBox prikazuju se informacije o projektu. Funkcionalnost preostale dve Button kontrole je poznata iz ranijih vežbi(Button kontrola sa tekstom “Odustani” ima istu funkcionalnost kao iButton  kontrola “Poništi” u ranijim vežbama). Pre prikazivanja informacija o projektu , obavezno proveriti dali je korisnik uneo podatke o nazivu i datumu početka realizacije projekta(obavezna polja za unos, dodata je * u tekst pripadajuće kontrle Label). Korisnički interfejs prikazan je na Slika_29_12

Slika_29-12: Korisnički interfejs za Vežba 29.11

private void btnPrikazi_Click(object sender, EventArgs e) {
  string naziv = txtNaziv.Text, datumPocetka = txtDatumPocetka.Text;
  if (naziv.Trim() == "") {
    MessageBox.Show("Morate uneti vrednost u polje za naziv projekta", "Upozorenje");
    return;
  }
  if (datumPocetka.Trim() == "") {
    MessageBox.Show("Morate uneti vrednost u polje za datum početka", "Upozorenje");
    return;
  }
  string mestoRealizacije = rbSrbija.Checked ? "Srbiji" : "van Srbije";
  string zavrsen = chkZavrsen.Checked ? "je završen" : "nije završen";
  string opis = txtOpis.Text;
  string poruka = "Naziv projekta je " + naziv + ";" + "\r\n";
  poruka += "Datum početka realizacije projekta je " + datumPocetka + ";" + "\r\n";
  poruka += "Projekat se realizuje u  " + mestoRealizacije + ";" + "\r\n";
  poruka += "Projekat " + zavrsen + ";" + "\r\n";
  poruka += "Dodatni opis projekta:   " + opis + ";";
  MessageBox.Show(poruka, "Informacije");
}

Kompletan kod projekta za Vežba 29.11 možete preuzeti ovde.


error: Content is protected !!
Scroll to Top