Windows Forms - Uvod
Windows Forms - Uvod
Startovanjem programa C# otvara nam se glavni prozor.Iz menija File biramo File/New project.
Ako nisu prisutni na ekranu, pomoću View otvaramo ToolBox i Properties.
Izborom dogadjaja otvara se ulazna tačka za pisanje koda koja se nalazi na novoj kartici (ne
Form1.csDesign, već Form1.cs). Veliki deo koda generiše sam C#, a mi unosimo naredbe samo
na poziciju gde smo napravili dogadjaj.
Prevodjenje programa vrši se naredbom BuildSolution, a startovanje, ako nema grešaka, pomoću
Debug, ili Start without debugging.
Projekat čuvamo naredbom Save All.Tu biramo poziciju (Browse) i naziv projekta.(Nema potrebe
da se bira opcija Create directory for solution.)
Forme i događaji
Primer 0događaj
Otvoriti novi projekat.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace primer0
{
publicclass Form1 : System.Windows.Forms.Form
{
private System.ComponentModel.Container components = null;
public Form1()
{ InitializeComponent(); }
………..
Primer 1 Pozdrav
1
3
Na formu dovući tri kontrole: labelu, textbox i dugme. 2
Izabrati za dugme događaj Clik (može samo 2xclick na dugme) i uneti
kodMessageBox.Show("Hello " + textBox1.Text);
Tokom dizajniranja podešavati svojstva forme i kontrola (boja slova, dimenzije, tekst, name…)
publicpartialclassForm1 : Form
{
Random r=new Random(); //generator slucajnih brojeva
//ovaj red unosimo sami, r je globalna promenljiva
public Form1()
{
InitializeComponent(); //ovo je kod koji je generisao program...
}
publicclassForm1 : System.Windows.Forms.Form
{
……
privatevoid btRazmeni_Click(object sender, System.EventArgs e)
{
string s=tbPrvi.Text;
tbPrvi.Text=tbDrugi.Text;
tbDrugi.Text=s;
}
}
namespace Sat
{
publicclassForm1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Label lbDatum; //ove dve labele su desnona formi
private System.Windows.Forms.Label lbVreme;
private System.Windows.Forms.Label label1; //ove dve labele su levo na formi
private System.Windows.Forms.Label label2;
namespace sabiranje
{
publicclassForm1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox tbPrviBroj;
private System.Windows.Forms.TextBox tbDrugiBroj;
private System.Windows.Forms.TextBox tbRezultat;
private System.Windows.Forms.Button btSaberi;
……..
privatevoid btSaberi_Click(object sender, System.EventArgs e)
{
try
{
double x,y,z;
x=Convert.ToDouble(tbPrviBroj.Text);
y=Convert.ToDouble(tbDrugiBroj.Text);
z=x+y;
tbRezultat.Text=Convert.ToString(z);
// moze i ovako: tbRezultat.Text=z.ToString();
}
catch
{ MessageBox.Show(" Neispravni podaci", "Greska"); }
}
O = a + b + c;
s = O / 2;
P=Math.Sqrt(s*(s-a)*(s-b)*(s-c)); // funkcija koren zove se Math.Sqrt(…
}
catch
{ MessageBox.Show(" Neispravni podaci", "Greska"); }
}
Kako bi se radilo sa dva dugmeta? Bila bi dva događaja, u jednom se računa obim, u drugom
površina.
Probaj da uradiš slične primere za računanje obima i površine ili površine i zapremine nekih
geometrijskih slika i tela.
Primer 8 Brojanje
Na formu dovući 4 dugmeta, textbox i tajmer kao na slici i
podesiti svojstva.
Izabrati za dugmad događaje Clik i uneti kod.
namespace Brojanje
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btNapred;
private System.Windows.Forms.Button btNazad;
private System.Windows.Forms.Button btZaustavi;
private System.Windows.Forms.Button btPonisti;
private System.Windows.Forms.Timer timer1;
Primer 2: CheckBox
Otvoriti novi projekat.
while (n >= 2)
{
while (n % i == 0)
{
n /= i;
lBrojevi.Text+=i.ToString()+" ";
}
i++; //sledeci delitelj
}
privatevoid btDodaj_Click(…)
{
lBLista.Items.Add(tBUlaz.Text);
tBUlaz.Clear();
tBUlaz.Focus();
}
privatevoid btIzbrisiListu_Click(…)
{
lBLista.Items.Clear();
tBUlaz.Focus();
}
privatevoid btBrisiStavku_Click(…)
{
if (lBLista.SelectedIndex != -1 )
lBLista.Items.RemoveAt(lBLista.SelectedIndex);
tBUlaz.Focus();
}
Primer 5
privatevoid cBUlaznaLista_ItemCheck(…)
{
string stavka = cBUlaznaLista.SelectedItem.ToString();
if (e.NewValue == CheckState.Checked) // ako je stavka izabrana,
lBIzlaznaLista.Items.Add(stavka); // ide u izlaznu listu,
else lBIzlaznaLista.Items.Remove(stavka); // inace se brise
}
// Stavke se unose u listu rucno, na Items / Collection
// i postavlja se lista na CheckOnClick na true
Primer 7a
Na formu dovući kontrole kao na
slici (lista lstSelektovani; i čekirana lista
chkListaIzbora).
Izabrati događaj za dugme.
Startovati program.
privatevoid btnPrebaci_Click(…)
{
//Proveravamo da li postoji neki potvrdjeni element u kontroli CheckedListBox
if (this.chkListaIzbora.CheckedItems.Count>0)
{
//Ispraznimo kontrolu ListBox u koju stavljamo izabrani element
this.lstSelektovani.Items.Clear();
//Prodjimo u petlji kroz kolekciju CheckedItems kontrole CheckedListBox
//i dodajmo elemente u okvir Selected
foreach (string item inthis.chkListaIzbora.CheckedItems)
this.lstSelektovani.Items.Add(item.ToString());
//Ponistimo sve sto je potvrdjeno u kontroli checkedListBox
for (int i=0; i<this.chkListaIzbora.Items.Count; i++)
this.chkListaIzbora.SetItemChecked(i,false);
}
}
Primer 8
Na formu dovući kontrole kao na slici
(tBTemperatura; lBTemperatura; btDodaj; rBRaspon,
rBMin, rBMax, rBProsek; lIspis).
Izabrati događaj za dugme.
Da se ne bi prerano birala radiodugmad, na
GroupBox-u (gBIzbor) uključiti Enabled na false.
Startovati program.
privatevoid btDodaj_Click(…)
{
intt;
t= Convert.ToInt32(tBTemperatura.Text);
lBTemperatura.Items.Add(tBTemperatura.Text);
publicpartialclassForm1 : Form
{
int S=0; // broj kosarakasa koji imaju visinu >195
..........
privatevoid btDodaj_Click(object sender, System.EventArgs e)
{
if(tBVisina.Text!="")
{
lBVisine.Items.Add(tBVisina.Text);
if (Convert.ToInt32(tBVisina.Text)>195)
S++; //ako je >195 uvecavamo S
double p=100.0*S/lBVisine.Items.Count; // odredjivanje i ispis %
lIspis.Text=p.ToString("0.00")+"% kosarkasa ima visinu >195cm";
tBVisina.Text="";
tBVisina.Focus();
}
}
privatevoid btBrisi_Click(object sender, System.EventArgs e)
{
if(lBVisine.SelectedIndex>=0)
{ // ako visina koju brisemo > 195 smanjujemo S za 1
if (Convert.ToInt32(lBVisine.SelectedItem)>195)
S--;
lBVisine.Items.RemoveAt(lBVisine.SelectedIndex);
double p; // odredjivanje i ispis trazenog procenta
if(lBVisine.Items.Count!=0)
p=100.0*S/lBVisine.Items.Count;
else p=0;
lIspis.Text=p.ToString("0.00")+"% kosarkasa ima visinu >195cm";
}
}
Stringovi
Primer 1: stringovi
Primer 3
Na formu dovući kontrole kao na slici
(tBImePrezime,btDodaj, liste lBIme, lBPrezime).
Izabrati događaj za dugme.Startovati program.
privatevoid btDodaj_Click(object sender, EventArgs e)
{
string s = tBImePrezime.Text,ime,prezime;
int pozPraznine=s.IndexOf(' ');
//pozicija praznine u stringu s
ime = s.Substring(0,pozPraznine);
//ime je deo s od pocetka do praznine
prezime = s.Substring(pozPraznine + 1);
//prezime je od praznine do kraja
lBIme.Items.Add(ime);// u list box ime dodaje se ime
lBPrezime.Items.Add(prezime); //u list box prezime
tBImePrezime.Text = ""; //brise se textbox
}
Vrste MessageBox-ova.
Primer4Vrste MessageBox-ova, klasa DialogResult
}
else
{
MessageBox.Show("Nista nisam uradila!");
}
Primer 5 radio dugmad i MessageBox ikone
Otvoriti novi projekat.
Na formu dovući dva GroupBox-a sa odgovarajućim radio
dugmadima, dve labele i dugme.
promptLabel
Napraviti događaj za dugme.
Definisati globalne promenljive iconType i buttonType.
publicpartialclassForm1 : Form
{
private MessageBoxIcon iconType=MessageBoxIcon.Error; // deklarisanje globalnih
private MessageBoxButtons buttonType=MessageBoxButtons.OK; // promenljivih
…….
// izbor tipa dugmeta; OK,Cancel, Abort, Retry, Ignore…
privatevoid buttonType_CheckedChanged(object sender, System.EventArgs e)
{
if (oKRB.Checked == true)
buttonType = MessageBoxButtons.OK;
if (abortRetryIgnoreRB.Checked == true)
buttonType = MessageBoxButtons.AbortRetryIgnore;
if (oKCancelRB.Checked == true)
buttonType = MessageBoxButtons.OKCancel;
if (yesNoCancelRB.Checked == true)
buttonType = MessageBoxButtons.YesNoCancel;
if (yesNoRB.Checked == true)
buttonType = MessageBoxButtons.YesNo;
if (retryCancelRB.Checked == true)
buttonType = MessageBoxButtons.RetryCancel;
}
// izbor tipa znaka; ? !...
privatevoid iconType_CheckedChanged(object sender, System.EventArgs e)
{
if (errorRB.Checked == true)
iconType = MessageBoxIcon.Error;
if (exclamationRB.Checked == true )
iconType = MessageBoxIcon.Exclamation;
if (informationRB.Checked == true)
iconType = MessageBoxIcon.Information;
if (questionRB.Checked == true)
iconType = MessageBoxIcon.Question;
}
// prethodni dogadjaji se pridruze svakom radio dugmetu na listi dogadjaja